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

fbghwls1213님의 프로필 이미지
fbghwls1213

작성한 질문수

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

타입 변환 #3

동적할당과 배열

작성

·

251

0

동적할당과 배열 질문 입니다.

int형의 경우

int* ptr = new int[100];

delete[] ptr; 

이렇게 동작하는 것으로 이해하고 있습니다. 

class의 경우 강사님께서

Item* item4[100] = {};

for (int i = 0; i<100; i++)

{

item4[i] =  new Item();

}

이렇게 두단계로 나눠서 먼저 포인터 배열을 생성하고 반복문을 돌려서 하나씩 동적할당을 해주는 식으로 설명해주셨는데

Item* item5 = new Item[100]

이런 방식으로는 할 수 없는 건가요?

답변 2

0

위의 질문에서 힙 공간의 생성되는 객체들의 메모리 구조는 다르다고 이해하는게 맞을까요?

강의의 방식인 item4는 각각 힙 공간에 랜덤하게 떨어져서 잡히게 될 수 있는데, 반면에 질문자의 item5는 item이 힙 공간에 예쁘게 순서대로 붙어서 잡히는걸로 생각됩니다.

그래서 결국 힙 메모리에 생성되는 형태가 다르다고 이해하고 있는데 맞나요?

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

네 그것도 맞습니다.

0

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

둘다 되고 그냥 방식이 다른겁니다.
전자는 [(포인터의) 배열]이고 후자는 [동적으로 생성한 배열]을 이용한 것이죠.
그런데 어차피 배열은 잘 쓰지 않고
나중에 가면 vector와 같은 container를 사용하니 그냥 대충 넘어가셔도 됩니다.

fbghwls1213님의 프로필 이미지
fbghwls1213

작성한 질문수

질문하기