按照大多数书本上来说:
- delete释放new分配的单个对象指针指向的内存
- delete[]释放new分配的对象数组指向的内存
- 针对简单的类型使用new分配后的不管是单个对象还是对象数组都能够通过delete或者delete[]来释放所有的内存。原因在于分配简单对象时,内存大小已经确定,系统可以记忆并且进行管理,在析构时,系统并不会调用析构函数。
- 针对用户自定义的类类型,如果是分配的单个对象那么调用delete会正确释放对象占用的内存并调用对象的析构函数,但是对于对象数组,你如果使用的是delete而不是delete[],对不起你只能释放数组中第一个对象占用的内存和调用第一个对象的析构函数。