当我使用unique_ptr时,为什么会发生内存泄漏?

时间:2019-07-18 15:21:24

标签: vector memory-leaks polymorphism unique-ptr

我声明:

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的向量应删除拥有的对象。有任何想法吗 ?

0 个答案:

没有答案