我声明:
1.11.0
我有一个基类,行为带有虚拟析构函数。
template<class T>
using UniquePntr = std::unique_ptr<T>;
我从Behavior派生了类,其中一些类包含指向存储在Behavior中的其他对象的指针的矢量:
class Behavior {
public:
...
virtual ~Behavior() {
}
};
有时,我会使用以下方式明确删除实例:
vector<UniquePntr<Behavior>> stepInstances;
如果标志为true,则valgrind显示内存泄漏。当flag为false时,没有问题。我用打印语句确认,当flag为true时,不会调用派生类上的析构函数。我不明白为什么。我确定清除unique_ptr的向量应删除拥有的对象。有任何想法吗 ?