반응형
C++에서 Memory(auto든 static이든 dynamic이든)를 사용할 때 초기화 하지 않았을 때의 값은 Undefined다. VC++에서는 Debug모드일 때 메모리 관련 오류를 디버깅하기 위해 자동으로 메모리를 초기화 해 주는데, 그 값들은 아래와 같다.
- 0xcccccccc (3435973836) - 초기화 되지 않은 지역변수.
- 0xcdcdcdcd (3452816845) - 초기화되지 않은 힙에 할당된 메모리.
- 0xdddddddd (3722304989) - 힙에서 free된 메모리.
- 0xfeeefeee (4277075694) - 힙에서 free된 메모리.
- 0xfdfdfdfd (4261281277) - 힙에 할당된 메모리의 초과범위(할당된 메모리의 양쪽 끝)
참고하자!
From: http://blog.empas.com/lisyoen/16384741
================================================================================================================
디버그모드시 쓰레기 값의 의미
*릴리즈는 이값을 채워넣지않음.
- 0xCCCCCCCC
초기화 하지 않은 지역변수
- 0xCDCDCDCD
힙에 할당된 메모리다.그러나 초기화 되지 않았다.
- 0xDDDDDDDD or 0xFEEEFEEE
힙에서 Free된 메모리이다. 그것을 사용할 때
- 0xFDFDFDFD
할당한 것을 벗어난 heap의 공간을 사용할 시
알고 보니 단순 쓰레기값이 아니더라구요,
디버깅할때 잘못된 메모리 주소 사용으로인해 프로그램이 중단되었을경우
값을 보고 원인을 찾을수 있습니다.
원문출처 : http://www.gpgstudy.com/forum/viewtopic.php?topic=10342
참고출처 : http://www.codeguru.com/Cpp/W-P/win32/tutorials/article.php/c9535/