작성
·
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이 힙 공간에 예쁘게 순서대로 붙어서 잡히는걸로 생각됩니다.
그래서 결국 힙 메모리에 생성되는 형태가 다르다고 이해하고 있는데 맞나요?
0
둘다 되고 그냥 방식이 다른겁니다.
전자는 [(포인터의) 배열]이고 후자는 [동적으로 생성한 배열]을 이용한 것이죠.
그런데 어차피 배열은 잘 쓰지 않고
나중에 가면 vector와 같은 container를 사용하니 그냥 대충 넘어가셔도 됩니다.
네 그것도 맞습니다.