我使用向量得到内存泄漏

tom*_*ies 0 c++ memory-leaks vector visual-studio-2010

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

vector<SomeInterface*> ary;
Run Code Online (Sandbox Code Playgroud)

我注释掉整个代码从开:无效main()和矢量元; 现在使用_CrtDumpMemoryLeaks(); 在Visual Studio 2010中,我得到1个块泄露.

怎么解决?

问候.

Sor*_*rin 5

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

for (auto *p : ary) delete p;
Run Code Online (Sandbox Code Playgroud)

要么

vector<std::unique_ptr<SomeInterface>> ary;
Run Code Online (Sandbox Code Playgroud)

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