반응형

http://blog.naver.com/kienuu/10015143165


분류: Win32/MFC
이름: 박상백(출처 : http://www.yunubeback.com/bbs/zboard.php?id=DevBoard)

http://www.yunubeback.com/bbs/data/DevBoard/Funny_Memory_Values.mht
http://www.yunubeback.com/bbs/data/DevBoard/Memory_Debug_Codes.mht



디버깅중이나 에러 발생시 마주치는 이상하기도 하고 우습기도 한 메모리주소가 있습니다.
이러한 메모리주는 일정하게 특수한 값으로 설정되곤 하는데 그 값들은 각각 의미를 가지고 있습니다.

Microsoft Visual C++ Runtime Library (DEBUG_NEW가 선언된 상태)
(1) 0XCD, 0xCDCD, 0xCDCDCDCD
   - malloc() 또는 new로 객체가 생성되고 아직 Write한 적이 없는 상태
(2) 0xFD, 0xFDFD, 0xFDFDFDFD
   - "No man's land"
   - 요청한 블럭에 속하지 않는 위치에 존재하는 몇Bytes가량의 금지구역
   - 메모리 경계검사를 위해 삽입됨
(3) 0xDD, 0xDDDD, 0xDDDDDDDD
   - free() 또는 delete로 객체를 Free한 상태

Compiler Initialization
(1) 0xCC, 0xCCCC, 0xCCCCCCCC
   - VC++에서 /GZ옵션을 넣어 컴파일하는 경우에만 적용됨
   - 초기화되지 않은 변수들은 모두 이러한 형태의 값을 갖게 됨

Windows NT Memory Codes
(1) 0xABABABAB
   - LocalAlloc()함수에 의해 할당된 메모리 블럭
(2) 0xBAADF00D
   - "Bad Food"
   - LocalAlloc(LMEM_FIXED, ...)를 통해 할당된 메모리 블럭이지만 아직 Write한 적이 없는 상태
(3) 0xFEEEFEEE
   - HeapAlloc() 또는 LocalAlloc()함수에 의해 할당될 예정인 메모리
   - HeapFree()함수를 통해 이미 Free된 상태

* 자세한 내용은 첨부파일 참조

 

 

물론 아래 구문으로 전부 예외 처리가 가능하기야 하지만서도 ..ㅎㅎ

try{

}

catch(...)

{

}

반응형

+ Recent posts