删除指针数组

Krz*_*wek 15 c++ arrays pointers delete-operator

确实delete[] a,在那里a被指针的动态分配的数组,执行delete对于在阵列中的每个指针?

我想,它为具有用户定义类的数组执行析构函数,但是指针发生了什么?

jua*_*nza 22

不,delete []用于删除数组.如果需要删除数组元素,则需要调用delete每个元素.


Mik*_*our 7

否.原始指针不包含有关如何(或是否)应该释放其目标的信息,因此销毁它将永远不会删除目标.

这就是为什么你永远不应该使用它们来管理动态资源 - 你必须自己完成所有工作,这可能非常容易出错.相反,您应该使用RAII,用容器,智能指针和其他管理资源的类替换指针,并在销毁时自动释放它们.用std::vector(或者std::vector<std::unique_ptr>,如果你真的需要单独分配每个对象)替换动态数组,所有内容都将自动解除分配.