• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목배열 및 포인터의 delete 관련하여2019-05-14 11:13
작성자

1. 

int * pt = new int[5];

delete pt;

-> 됨.



2.

int * pt = new int[5];

delete[] pt;

-> 됨.


delete 관련하여 헷갈리는 내용들이 있어 질문 드립니다.

우선 delete pt 와 delete *pt의 차이는 강의 노트와 https://www.geeksforgeeks.org/delete-in-c/ 의 1,3번을 참고해보면

delete pt는 해당 포인터를 delete해주고 delete pt는 new로 생성된 배열의 메모리만큼을 풀어준다고 하는 것 같은데,

사실 delete[] pt에서는 해당 배열의 첫번째 칸을 주어서 그 배열 각 요소에 대한 소멸을 하는 걸로 알고있습니다.


Q. 근데 delete pt는 어떤 역할을 하는 지 잘 모르겠네요.

int * pt=new int[5];

delete pt;

에서 delete pt의 의미가 무엇인가요?

. (참고자료와 강의노트에 의하면 delete [] 는 new로 할당받은 메모리를 풀어주고 delete는 포인터에 대한 소멸을 시킨다는 것 같은데...)

그리구

int * pt =new int[5]; delete p;

는 되는데 어떤 클래스 Bus가 있다고 하면

Bus * pt=new Bus[5]; delete p;는 런타임에러가 뜹니다. 왜일까요...

댓글
이전[re]코드분리에관하여2019-05-15
다음동적할당으로 생성한 객체의 배열 delete2019-05-13