~T(); // <---- -6ren">
gpt4 book ai didi

c++ - 我们是否需要显式调用分配给 "simple POD classes"的 "placement new"的析构函数?

转载 作者:可可西里 更新时间:2023-11-01 15:39:14 25 4
gpt4 key购买 nike

这里的“简单”是指具有非虚空析构函数或 POD 类型的类。

典型例子:

char buffer[SIZE];
T *p = new(buffer) T;
...
p->~T(); // <---- always ?

如果我们不在 p 上调用显式析构函数会怎样?我不认为这是未定义的行为或内存泄漏。
重用 buffer 有什么问题吗?

最佳答案

从技术上讲,假设析构函数不释放在构造期间获取的任何资源,则可能没有必要。

但是,考虑到非技术方面——代码的维护和演进——我会坚持最佳实践——构建的东西应该被破坏。要考虑的场景 - 如果将来某些更改将确定要放入析构函数中的相关代码怎么办?你会记得你怀疑过那种类型的对象的破坏吗?

关于c++ - 我们是否需要显式调用分配给 "simple POD classes"的 "placement new"的析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com