c++ - 删除 x 与 ::operator delete(x)
问题描述
delete x;
和 和有什么不一样::operator delete(x);
?我知道它们是不同的,但我无法弄清楚它们的区别是什么。我的具体用例是我有一个必须分配的对象,::operator new(size_t)
然后用placement new 运算符进行初始化。但是,我真的希望能够使用delete x;
而不是释放它::operator delete(x);
,所以我想知道这两种方法(没有双关语)何时会做不同的事情,所以我可以知道何时(如果有的话)可以安全使用它们可以互换。
解决方案
delete x
是一个delete expression
。
::operator delete(x)
是一个deallocation function
。
删除表达式将调用析构函数(如果存在),然后调用释放函数。直接调用释放函数将绕过析构函数。
推荐阅读
- c# - 在内存中使用 SQLite 运行 EF Core - 未配置数据库提供程序
- php - 大量的 CURL [PHP/Python]
- azure-devops - TFS 扩展 - TF400813: 用户 ... 无权访问此资源
- xpath - XPath concat 函数不起作用
- python - 将非数值数据应用于神经网络
- android - Android:JSONObject 无效值和 Wordpress 的 API
- c# - 从 ObservableCollection 中删除多个项目
- python - 使用python子进程执行命令并隐藏控制台窗口
- swift - 我的水平滚动视图不起作用
- hyperledger-composer - 尝试启动业务网络时出错。最后一个错误是 Error: Error: 14 UNAVAILABLE: Trying to connect an http1.x server