C++unique_ptr未调用析构函数

C++ unique_ptr not calling the destructor

本文关键字:调用 析构函数 ptr C++unique      更新时间:2023-10-16

我有一个unique_ptrs的vector,它指向一个名为state的类。当我用向量调用pop_back()时,唯一的指针会从内存中删除(我认为),但它指向的状态对象永远不会被删除。在删除其指向的对象时,该指针或唯一指针不知何故不调用析构函数?我所知道的是,当我的唯一指针从向量中移除时,我的析构函数不会被调用。

这就是矢量:

std::vector< std::unique_ptr<State> > mStates;

我试过了:

mStates.pop_back();

这会删除唯一指针,我以为唯一指针会为我删除状态并调用状态的析构函数,但这并没有发生。BTW我通过使用添加元素:

 mStates.push_back();

我修复了它。我的问题是我需要一个虚拟析构函数。我甚至没有想过虚拟析构函数会存在。它现在起作用了。