• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

동적할당과 배열

21.08.19 14:05 작성 조회수 159

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

초보언리얼님의 프로필

초보언리얼

2021.11.01

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

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

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

네 그것도 맞습니다.

0

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