内存泄漏(有点)与静态std :: vector
我在一个类中有一个静态的std::vector
。 当我使用微软的内存泄漏检测工具时:
_CrtMemState state;
_CrtMemCheckpoint( & state);
_CrtMemDumpAllObjectsSince( & state );
它向插件插入东西后会报告泄漏。 这对我来说很有意义,因为在向量中插入某些内容时会分配新空间。 这个空间不会被释放,直到程序终止(因为矢量是静态的)。 这是正确的吗?
在包含向量的类的析构函数中,我将删除放入向量中的对象。 但是,发生插入时分配的内存仍然悬而未决。 无论如何删除这个空间?
你可以交换一个空的矢量 - 这将释放内存。
另请参阅Q:缩小矢量
增加詹姆斯写的东西。 他意味着要这样做:
std::vector<T>().swap(v);
'v'是你想要释放内存的向量。
这只是Visual Studio的一个怪癖。 向量析构函数确实释放内存,但内存检查模块并不总是发现它,所以它抱怨。 这有点痛苦,但没有什么可担心的。
链接地址: http://www.djcxy.com/p/19921.html