<分区>
删除数组只用一个关键字很难吗?效率低吗?
<分区>
删除数组只用一个关键字很难吗?效率低吗?
最佳答案
首先,让我总结一下两者的作用:delete
为一个 对象调用析构函数并释放内存; delete[]
调用一些 个对象的析构函数并释放内存。
可以将它们合并到同一个操作中:“调用一些 对象的析构函数并释放内存。”。毕竟一个是一些数。
delete
和delete[]
都对指针进行操作。就像这个:
foo* ptr;
仔细看看。并告诉我当我们 delete
它时应该调用多少析构函数。你不能。编译器也不能。这只能在运行时知道。有关对象数量的信息必须存储在某处。这意味着,对于 new[]
的每次使用,都会分配一些额外的内存来跟踪该数字。
C++ 建立在“你不用为你不用的东西付费”的原则之上,这就是非数组形式存在的原因:因为 delete
总是只删除一个对象, new
不需要额外分配。
关于c++ - 为什么 C++ 仍然有 delete[] 和 delete 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999985/