我使用向量得到内存泄漏

时间:2013-12-16 17:45:05

标签: c++ visual-studio-2010 vector memory-leaks

我编写了一些简单的接口,我想创建一个包含实现接口的类对象的全局向量。 所以我做了以下事情:

vector<SomeInterface*> ary;

我注释掉除之外的整个代码:void main()和vector ary; 现在使用_CrtDumpMemoryLeaks();在Visual Studio 2010中,我泄漏了1个块。

如何解决?

问候。

2 个答案:

答案 0 :(得分:5)

您需要删除已分配的内存。 您有两种选择:

for (auto *p : ary) delete p;

vector<std::unique_ptr<SomeInterface>> ary;

第二个更安全,因为它会在你摧毁矢量时自动释放内存。

答案 1 :(得分:1)

vector不是泄漏的原因,我可以保证这么多。您正在向量中存储SomeInterface* s。我假设您分配了这些(new SomeInterface(...))并且不在任何地方删除它们。我建议你使用智能指针:

std::vector<std::unique_ptr<SomeInterface>> ary;

如果您无法执行此操作,则需要在使用后删除分配...

for(SomeInterface* i : ary)
    delete i;