【发布时间】:2015-09-20 19:58:42
【问题描述】:
我有一个需要大约 20 MB 内存的应用程序。在一个很少使用的算法中,它 (std::vector) 临时分配 250 MB。解除分配后,systemmonitor 仍然显示此用法。如何将内存释放回系统?
【问题讨论】:
-
为什么需要发布它?你不能就这样吗?
-
@jalf:可能担心这是泄漏,并且其他程序无法使用该内存。一个合理的问题,如果仅仅是因为它显然源于一个误解。
-
内存是直接在vector中使用还是从vector中的对象指向的?每个版本的默认分配器都有一个单独的块大小的截止值,超过该值分配以不同的方式完成,因此释放一直回到操作系统。如果 250MB 在一个巨大的块中(向量中的实际对象),那么释放它应该转到操作系统。但是,如果不直接使用内存,您的症状就会更有意义。
-
在最后一次测试中,250'000 个指向元素的指针,分配有
new,导致 250MB 内存使用。好的,我意识到问题不在于矢量
标签: c++