VS로 디버깅시 디버거로 특정 메모리 주소의 값을 확인할 때가 있습니다.
이때 VS에서 사용하는 매직 넘버의 의미를 알면 디버깅 시에 메모리를 확인 할 때 도움이 됩니다.
다음은 Visual C++ debugging memory state 입니다.
Visual C++ debugging memory state
참고로 코드에 메모리 주소를 출력하는 코드는 다음과 같습니다.
이때 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 // 힙 메모리 해제후 채워지는 값.
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
Print("[%x]",ptr); // 0x1234
Print("[%p]",ptr); // 001234
반응형
'이전포스트' 카테고리의 다른 글
이제는 떠나보내는 나의 P15 ~ (0) | 2010.12.13 |
---|---|
[C++] CreateThread / _beginthread / _beginthreadex 의 설명 (1) | 2010.11.02 |
오픈소스 라이센스 종류와 간단요약 (0) | 2010.03.03 |
[Tip] Doxygen을 사용하여 소스코드에서 레퍼런스 문서를 자동으로 만들자. (0) | 2010.03.03 |
[Tip] SyntaxHighlighter - 블로그에 소스 코드를 보기 좋게 삽입해보자 (0) | 2010.03.03 |