int a;

int a = 0;

 

보통 코드를 작성할 때, 선언과 초기화는 동시에 수행하도록 습관을 들이라는 소리를 듣는다(적어도 나는 그랬다.)

 

이유로는, 초기화가 되지 않은 변수에는 쓰레기 값이 들어가기 때문이라고.

 

VS2017기준 C++에서는 초기화를 하지 않은 변수에 특정한 값이 들어가는 것을 볼 수 있다.

 

0xcccccccc : 초기화 안한 지역변수(주소 자리 포함, 지역변수 자리 전후에 다 들어감)

 

 

0xcdcdcdcd : 초기화 안한 힙 메모리

/

0xFDFDFDFD : 할당된 메모리의 전후에 들어가는 값들.(방지용? 가드용? 확인용?)

또는 0xfdfdfdfd : 할당된 범위를 초과한 힙 메모리를 참조할 시 (같은 의미)

 

0xdddddddd : 힙 free 후 메모리

또는 0xfeeefeee : 힙 free 후 메모리 / HeapAlloc() 또는 LocalAlloc()에 의해 할당 예정인 메모리

 

0xABABABAB : LocalAlloc()에 의해 할당된 메모리

 

0xBAADF00D : LocalAlloc으로 힙 할당 후 초기화 안함

 

LocalAlloc, GlobalAlloc?

 

16비트 Windows 환경에서는 힙 메모리가 Global Heap과 Local Heap으로 나누어져 있었다고 한다.

 

 

'C++' 카테고리의 다른 글

포인터  (0) 2019.07.15
함수 포인터 / 1  (0) 2019.07.12
인라인 함수  (0) 2019.06.12
클래스 스태틱과 함수 스태틱의 초기화에 대해  (0) 2019.06.12
SDL(Security Development Lifecycle)  (0) 2019.01.29

+ Recent posts