繁体   English   中英

内存泄漏(类型)与静态std :: vector

[英]Memory leak (sort of) with a static std::vector

我在类中有一个静态std::vector 当我使用微软的内存泄漏检测工具时:

_CrtMemState state;
_CrtMemCheckpoint( & state);
_CrtMemDumpAllObjectsSince( & state );

我将内容插入向量后会报告泄漏。 这对我来说很有意义,因为当向量中插入某些内容时会分配新的空间。 在程序终止之前,该空间不会被释放(因为向量是静态的)。 这是正确的吗?

在包含向量的类的析构函数中,我正在删除放入向量的对象。 但是,插入时分配的内存仍然存在。 反正有没有删除这个空间?

你可以用空的向量交换向量 - 这将释放内存。

另见问:收缩矢量

添加詹姆斯所写的内容。 他的意思是这样做:

std::vector<T>().swap(v);

其中'v'是要释放其内存的向量。

这只是Visual Studio的一个怪癖。 向量析构函数确实释放了内存,但内存检查模块并不总是发现它,所以它会抱怨。 这有点痛苦,但无需担心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM