인프런 커뮤니티 질문&답변

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

동적할당3에서 질문

작성

·

135

0

동적할당 3에서 m2의 메모리 구조를 볼 때

연속적으로 12바이트가 잡혀 있고 조금만 더 위에 올라가보면 12바이트가 잡혀 있는 걸 알려줄 수 있게

메모리에  0000000c로 잡혀 있는 것을 보여주셨습니다.

여기서 그자리에 new가 할당해준 메모리 크기가 들어온 다는 건 어떻게 알 수 있는 건가요?

원래 메모리 할당해준거에서 12바이트 더 위로 올라가면 몇 바이트 메모리 할당해줬다고 표시하는 것으로

new라는 연산자는 약속이 되어 있는건가요?

0x00F4058C  0000000c  .... => 12바이트 위에 메모리가 몇바이트만큼 잡혔는지 표시

0x00F40590  00000051  Q...

0x00F40594  fdfdfdfd  ????

0x00F40598  000000c8  ?... ==> 여기가 메모리 시작점

0x00F4059C  00000002  ....

0x00F405A0  00000003  .... => 여기까지 연속적으로 잡혀있고

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

C++ new를 할 때 메모리를 어떻게 관리할지
약속되어 있는 것은 아니고 구현에 따라 다릅니다.

그러나 대부분 이렇게 메모리 헤더를 두고
현재 사용중인 메모리 크기 및 다음 메모리 주소를 넣어서 관리하는 경우가 많습니다.
(그렇지 않으면 delete를 했을 때, 회수할 메모리의 크기를 알기 힘들기 때문)

실제로 나중에 나올 서버 시간에도 메모리 풀의 개념이 나오는데
이렇게 헤더를 사용하게 됩니다.

0

답변 감사합니다!

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

질문하기