C++ 에서 delete를 사용하든 delete[]를 사용하든 메모리는 정상적으로 해제된다.

하지만 4Byte int타입 10개 짜리 배열을 메모리 해제 할 경우 detele[]를 사용해서 해제를 하면

4Byte를 10번씩 해제 하지만, delete를 사용하면 40Byte를 한번에 해제 한다.

내부적으로 이야기하면 new[]를 사용할 경우 메모리 앞에 4Byte 메모리를 더 할당해서 배열의 크기를 저장해놓는다. 이 메모리를 해제할때에는 delete[]를 사용하면 이 배열의 크기를 확인하지만 delete를 사용하면 확인 하지 않는다. 따라서 delete[]를 사용해야 배열의 타입이 클래스일 경우 각각 인스턴스만큼의 생성자/소멸자를 호출 해줄 수 있다.

클래스 배열을 할당했다면 delete[]를 사용하지 않고 그냥 delete를 사용해서 해제 한다면 소멸자가 한번만 호출된다는 의미이다.