본문 바로가기

My Study/etc

눈에 보이는 만큼의 Heap 구조

일단은 시간이 많이 없어.. Window에서 malloc으로 힙에 메모리를 동적할당 했을 때
어떻게 힙에 할당이 되는지만 간략히 알아보았습니다. 대충 형태만 설명하는 글이라서.. 그냥 그림만 봐주셔도 됩니다.

소스코드입니다.

4번의 동적 할당을 받았습니다.

어떻게 쌓였는지 메모리를 보도록 하겠습니다.

0x41은 A라는 것쯤은 다들 아실 것입니다.
첫번째로 할당된 힙을 보면 총 용량이 24Byte입니다.
A가 입력된 8Byte를 빼면 16Byte가 남게 됩니다. 
16Byte에는 ABABABABABABABAB0000000000000000 이라는 값이 들어가 있는데 어떠한 값인지는 모르겠습니다.

쭉 메모리를 보시면 첫번째로 할당된 메모리를 제외하고는 크기가 전부 할당한 메모리 + 24Byte 라는 것을 알 수 있습니다.
처음 8Byte 뒤 16Byte가 항상 추가로 붙어 있습니다. 뒤 16Byte는 전부 같은 것으로 보아 큰 의미는 없는 것 같습니다.
처음 8Byte에서는 두개의 값을 나타내주고 있는데 이에대한 내용 또한 생략입니다. ( 구조체 이겠지요.. )

어떻게 할당이 되는지 그림만 보여드리기 위해 작성해보았습니다.

결론 
첫번째로 할당되는 힙 영역  : 할당한메모리 + 16Byte
그 다음 할당된 힙 영역들   : 8Byte + 할당한메모리 + 16Byte

힙 오버플로우를 공부해봐야겠군요 ^^;

'My Study > etc' 카테고리의 다른 글

Redhat 9.0 인터넷 설정  (0) 2010.05.27
C0000374 예외코드  (2) 2010.05.01
초기화되지 않은 메모리 초기화 값  (0) 2010.04.22
곰플레이어 신기한 기능  (0) 2010.04.18
한글 깨짐 현상  (0) 2010.04.17