首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向量::清除调用析构函数而不丢失分配的内存

向量::清除调用析构函数而不丢失分配的内存
EN

Stack Overflow用户
提问于 2013-12-05 06:24:24
回答 2查看 212关注 0票数 2

std::vector::clear的要点是,它在保持容量不变时将数组的大小削减到0。向量中包含的对象的析构函数在.clear()点被调用。

我不明白的是,如何在不释放对象驻留的内存的情况下调用析构函数。是否有一种已知的方法可以用传统的C++来完成这一任务?有什么更低层次的黑魔法能做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2013-12-05 06:27:38

我不明白的是,如何在不释放对象驻留的内存的情况下调用析构函数。是否有一种已知的方法可以用传统的C++来完成这一任务?

显式调用析构函数。标准规定(在第23.2.1节),容器中的每一种类型都必须允许该表达式格式良好:

代码语言:javascript
运行
复制
(&a)->~X()
票数 2
EN

Stack Overflow用户

发布于 2013-12-05 12:39:06

std::vector<T>包含一个能够做到这一点的std::allocator<T>。特别是,请参见std::allocator::destroy(T* ptr)

在幕后,std::allocator<T>将执行(非常类似于) ptr->~T()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20392960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档