C++unique_ptr未调用析构函数
C++ unique_ptr not calling the destructor
我有一个unique_ptr
s的vector
,它指向一个名为state的类。当我用向量调用pop_back()
时,唯一的指针会从内存中删除(我认为),但它指向的状态对象永远不会被删除。在删除其指向的对象时,该指针或唯一指针不知何故不调用析构函数?我所知道的是,当我的唯一指针从向量中移除时,我的析构函数不会被调用。
这就是矢量:
std::vector< std::unique_ptr<State> > mStates;
我试过了:
mStates.pop_back();
这会删除唯一指针,我以为唯一指针会为我删除状态并调用状态的析构函数,但这并没有发生。BTW我通过使用添加元素:
mStates.push_back();
我修复了它。我的问题是我需要一个虚拟析构函数。我甚至没有想过虚拟析构函数会存在。它现在起作用了。
相关文章:
- 什么时候调用析构函数
- C++-明确何时以及如何调用析构函数
- C++ 防止在映射中放置()时调用析构函数
- 调用析构函数以释放动态分配的内存
- C++:使用方法调用析构函数的顺序是什么?
- 向量推回调用析构函数时调用析构函数
- 如何在调用析构函数时优雅地停止/销毁带有阻塞调用C++线程?
- C++,我应该调用析构函数吗?
- 如何获取有关在 Clang LibTooling 中调用析构函数的信息?
- 当我从 std::vector 中的新放置调用析构函数时会发生什么?
- 为什么这里不调用析构函数
- 在调用 std::bind 的产品后意外调用析构函数
- 为什么在传递给函数而不是构造函数时调用析构函数?
- 如何在C++中调用析构函数
- 为什么为未删除的对象调用析构函数?
- 调用析构函数时出错
- C++ 在不释放内存的情况下调用析构函数
- 为什么在运算符删除中不调用析构函数?
- C++ 调用析构函数后动态模板队列"double free or corruption (out)"
- 在 postOrderDelete 上调用析构函数时引发的异常