이전포스트

[C++] 디버깅시 메모리 값의 의미.

freemmer 2010. 3. 12. 15:23
VS로 디버깅시 디버거로 특정 메모리 주소의 값을 확인할 때가 있습니다.
이때 VS에서 사용하는 매직 넘버의 의미를 알면 디버깅 시에 메모리를 확인 할 때 도움이 됩니다.
다음은 Visual C++ debugging memory state 입니다.


Visual C++ debugging memory state
0xCCCCCCCC     // 초기화 하지 않은 스택 메모리.
0xCDCDCDCD     // 메모리 할당 후 초기화되지 않은 힙 메모리.
0xDDDDDDDD or 0xFEEEFEEE     // 힙에서 Free된 메모리이다. 그것을 사용할 때.
0xFDFDFDFD      // 할당한 것을 벗어난 heap의 공간을 사용할 시할당된 메모리의 전후 가드용
                          // 바이트에 채워지는 값

ABABABAB          // HeapAlloc으로 메모리 할당 후 가드 바이트에 채워진 값.
BAADF00D          // LocalAlloc(LMEM_FIXED)으로 메모리를 할당한 후 초기화하지 않음.
FEEEFEEE          // 힙 메모리 해제후 채워지는 값.


참고로 코드에 메모리 주소를 출력하는 코드는 다음과 같습니다.
Print("[%#x]",ptr);       // 0x001234
Print("[%x]",ptr);         // 0x1234
Print("[%p]",ptr);         // 001234

반응형