2019/03/06

Visual C++ 디버깅 메모리 상태

0xcccccccc (3435973836)
할당된 Stack 메모리를 초기화 하지 않을 경우 채워지는 값
해당 값은 어셈블리 __asm int 3(break)와 동일하여 이 영역을 접근하면 break point에 적중된다.
When the code is compiled with the /GZ option, uninitialized variables are automatically assigned to this value (at byte level).

0xcdcdcdcd (3452816845)
할당된 Heap 메모리를 초기화 하지 않을 경우 채워지는 값
Clean Memory: Allocated memory via malloc or new but never written by the application.

0xdddddddd (3722304989)
0xfeeefeee (4277075694)
Free 된 Heap 메모리에 채워지는 값
Dead Memory: Memory that has been released with delete or free. It is used to detect writing through dangling pointers.

0xfdfdfdfd (4261281277)
할당된 Heap 메모리의 경계(전,후)에 채워지는 값
Fence Memory: Also known as "no mans land." This is used to wrap the allocated memory (like surrounding it with fences) and is used to detect indexing arrays out of bounds.

0xABABABAB (‭2880154539‬)
HeapAlloc으로 메모리 할당 후 가드 바이트에 채워진 값
(Allocated Block?): Memory allocated by LocalAlloc().

0xBAADF00D (‭3131961357‬)
LocalAlloc(LMEM_FIXED)으로 메모리를 할당한 후 초기화하지 않음
Bad Food: Memory allocated by LocalAlloc() with LMEM_FIXED, but not yet written to.

https://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c9535/Inside-CRT-Debug-Heap-Management.htm

No comments :

Post a Comment