반응형

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/


+ Recent posts