HEAP CORRUPTION DETECTED
컴퓨팅/프로그래밍 2008/07/23 10:58dbgheap.c 파일안에 다음과 같은 상수들이 선언되어있다
static unsigned char _bNoMansLandFill = 0xFD; /* 메모리 상태 채크를 위해
쓰이는 값*/
static unsigned char _bDeadLandFill = 0xDD; /* 삭제된 메모리에 쓰이는 값 */
static unsigned char _bCleanLandFill = 0xCD; /* 새로 할당된 메모리에 쓰이는 값 */
static unsigned char _bAlignLandFill = 0xBD; /* fill no-man's land for
aligned routines */
힙에 메모리 할당시 디버그 모드에서는
_CrtMemBlockHeader 구조체 + _bNoMansLandFill(2바이트) + 실제 메모리( _bCleanLandFill 로 채워짐 ) + _bNoMansLandFill(2바이트) 로 구성되며
릴리즈모드에서는 널영역(2바이트) + _CrtMemBlockHeader 의 일부분 + 실제 메모리 (쓰레기 값) + 널영역(2바이트) 로 구성되며 _bNoMansLandFill 는 포함되지 않는다
디버그 모드에서 메모리 삭제시 _bNoMansLandFill 의 메모리 영역을 검사하게 되는데
여기 다른 메모리가 침범해 있을때 발생하는 에러가 바로 힙 커럽션이다
문제는 이 에러의 원인이되는 메모리침범이 당시에는 나오지 않고 delete 할때
나온다는거다
잘하자
참고 링크
http://www.docsultant.com/site2/articles/debug_codes.html
http://www.codeguru.com/Cpp/W-P/win32/tutorials/article.php/c9535
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/_core_Memory_Management_and_the_Debug_Heap.asp
'컴퓨팅 > 프로그래밍' 카테고리의 다른 글
| [펌] CRT 이야기 (0) | 2009/09/06 |
|---|---|
| HEAP CORRUPTION DETECTED (0) | 2008/07/23 |
| 델파이에서 VC++ DLL 사용시 주의사항 (0) | 2008/07/14 |
| MFC DLL 내부에서 wmemcpy 사용시 Heap 해제 에러 (0) | 2008/07/02 |
