반응형

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/


반응형

윈속을 쓰는데 라이브러리를 추가해야 하더라고요.
요놈.. ^^ ws2_32.lib wsock32.lib 두개의 라이브러리 파일 추가

디폴트 프로젝트에 라이브러리가 자동으로 포함되지 않기 때문에..

visual studio 2005에서는

프로젝트(P) -> 속성(P) (alt+F7) -> 구성 속성 -> 링커 -> 입력 -> 추가 종속성 에

추가해 주는 방법이 있습니다..

그 외에는 두가지 방법이 있네요.

1. #pragma comment(lib,"ws2_32.lib")
이걸 헤더파일에 추가해주는방법

2. 라이브러리를 링크시켜주는 방법
프로젝트 이름을 선택하신후 오른쪽 버튼 - ADD - Existing Item...에서 디렉토리 찾아서 ws2_32.lib를 넣어주면 됩니다. ^^
winmm.lib(windows multimedia를 의미) 라이브러리를 추가해 주어야 한다.


+ Recent posts