关键std::vector::clear
是要在保持容量不变的情况下将数组的大小减小为0 。向量中包含的对象的析构函数在的点被调用.clear()
。
我不了解的是,如何在不释放对象驻留的内存的情况下调用析构函数。是否有已知的方法可以使用常规C ++来完成此任务?是否存在某种更低级别的黑暗魔法来实现这一目标?
要调用的析构函数Object
类的Class
Object.~Class();
std::vector
手动执行此操作。
请注意,在您手动调用析构函数之后,如果析构函数Object
具有自动存储时间或先经过dnew
然后再分配delete
d,则仍然会再次调用该析构函数,这可能导致未定义的行为(如double delete)。显式调用析构函数在这里起作用是因为默认情况下,std::vector
它使用new放置在分配的原始存储上构造对象,而不是常规new。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句