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 |