我已经阅读了关于同一主题的多个类似问题,但我无法通过关注它们来解决问题。将指针存储到向量中时发生内存泄露
我想存储指向矢量,但我看到内存泄漏。我的代码如下。
#include <iostream>
#include <vector>
#include <memory>
class Base
{
public:
virtual ~Base() {}
};
class Derived : public Base {};
std::vector<std::unique_ptr<Base>> bv;
int main()
{
for (int i = 0; i < 10; i++)
bv.emplace_back(std::make_unique<Base>(Derived()));
bv.clear();
return 0;
}
Valgrind报告:“仍然可达:72,704字节在1块”。如果我不使用unique_ptr
,并且只使用bv.emplace_back(new Derived);
和delete
显式指定向量,则会出现同样的问题。什么导致了泄漏?
这些字节可能来自'bv'向量本身。尝试将其移至'main'以确保其内容被删除。 – dasblinkenlight
仍然可以访问的内存不是内存泄漏 – Justin
@dasblinkenlight,72K?不太可能。 – SergeyA