c++ - 为什么 C++ 仍然有 delete[] 和 delete 运算符?

标签 c++ arrays memory-management syntax

<分区>

删除数组只用一个关键字很难吗?效率低吗?

最佳答案

首先,让我总结一下两者的作用:delete一个 对象调用析构函数并释放内存; delete[] 调用一些 个对象的析构函数并释放内存。

可以将它们合并到同一个操作中:“调用一些 对象的析构函数并释放内存。”。毕竟一个一些数。

deletedelete[] 都对指针进行操作。就像这个:

foo* ptr;

仔细看看。并告诉我当我们 delete 它时应该调用多少析构函数。你不能。编译器也不能。这只能在运行时知道。有关对象数量的信息必须存储在某处。这意味着,对于 new[] 的每次使用,都会分配一些额外的内存来跟踪该数字。

C++ 建立在“你不用为你不用的东西付费”的原则之上,这就是非数组形式存在的原因:因为 delete 总是只删除一个对象, new 不需要额外分配。

关于c++ - 为什么 C++ 仍然有 delete[] 和 delete 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999985/

相关文章:

c++ - C++11 的三法则变成五法则?

javascript - 如何获取数组 B (由对象组成)中但不在数组 A 中的项目列表?

c - 在交互式 C 控制台应用程序中输入国家/地区后,打印大写名称

c# - 使用页面和 BitmapImage 的 WPF 应用程序中的内存泄漏

java - Golang 和大内存块分配

C++ 错误 : no match for 'operator>>' in 'input >> Group1->Entrepreneur::Item' |

c++ - 结构与对象 C++

c++ - 在 C/C++ 程序中使用汇编程序优化某些功能真的值得吗?

Python-性能-将大型 numpy 数组作为字符串打印到选项卡文件

ios - iOS 中是否有可用的垃圾收集器概念?