C++) delete와 delete[]의 차이점
배열의 크기를 확인하는가?
delete와 delete[]의 차이점
이 선배님께서 정말 잘 정리해 주셨다!
개요
int* p = new int[5];
delete p;
delete[] p;
위의 delete와 delete[]는 차이가 존재하는가? → 존재한다
new를 사용하여 메모리 할당 시, 배열의 크기 정보를 저장하기 위하여 내부적으로 4바이트 만큼 메모리를 더 할당한다. 이 메모리를 해제 해보자.
- delete - 배열의 크기 확인 없이 메모리 해제
- delete[] - 배열 크기 확인 후 메모리 해제
테스트 - delete[]
class Test {
public:
Test() { cout << "생성" << endl; }
~Test() { cout << "소멸" << endl; }
};
int main() {
Test* test = new Test[3];
delete[] test;
return 0;
}
결과
테스트 - delete
class Test {
public:
Test() { cout << "생성" << endl; }
~Test() { cout << "소멸" << endl; }
};
int main() {
Test* test = new Test[3];
delete test;
return 0;
}
결과