c++ - 为什么 new[] 表达式会调用析构函数?
问题描述
来自 C++17 标准(此处草稿),[expr.new]:
如果new 表达式创建类类型的对象或对象数组,则对分配函数、解除分配函数和构造函数进行访问和歧义控制。如果new 表达式创建了一个类类型的对象数组,则可能会调用析构函数。
为什么会new[]
调用析构函数?毕竟是新的。不是删除。
解决方案
如果缓冲区中任何对象的构造引发异常,则必须破坏先前构造的对象。这需要一个可用的析构函数。
推荐阅读
- batch-file - ping所有本地IP地址的批处理文件
- java - Webview 后退按钮调用 - 空对象引用
- bash - 使用 bash 将一个文档的每 2 行复制到另一个文档的每 2 行的开头
- c# - 实体框架(代码优先)创建不必要的重复外键
- sql - 验证元素时出错会停止迁移或 bacpac 备份
- c# - 在 .NET Core WebAPI 中使用分布式内存缓存时设置最大内存
- python - 检查是否从类内部调用了方法
- r - 根据另一个向量的值创建一个升序数字向量
- ios - Xcode VisualEffectView 防止与其他视图交互
- python - Python:使用反向求和操作进行上采样