繁体   English   中英

std :: queue内存消耗会导致内存泄漏 - C ++?

[英]std::queue memory consumption leads to memory leak - C++ ?

即使在我弹出qInt队列中的所有元素之后,以下代码也没有释放3000个元素所消耗的内存。 是什么原因 ?

std::queue<int> qInt; //Step01: Check the running memory

for (int i=0;i<3000;i++)
{       
    qInt.push(i);
}
//Step02: Check the running memory it should have been increased    

while(!qInt.empty())
{
    qInt.pop();
}
//Step03: Check the running memory expecting Step01 memory but it is still the same of Step02

通过defalut std容器一旦保留它就不会释放内存。 std :: queue通常在std :: dequeue类型上实现,它提供了shrink_to_fit 如果你不使用c ++ 11,请使用交换习语

如果你释放/释放/删除堆内存。 这并不意味着内存消耗会立即降低。 内存管理库有自己的可用内存缓存,它们会在达到阈值后释放。

首先,3000整数使用的内存非常低,如果使用任务管理器检查内存,则无法看到内存使用量的显着变化。 另外,如其他答案中所解释的,STL容器不会立即解除分配。 有一个很好的论坛讨论STL对象和对象指针的内存分配和释放。

暂无
暂无

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

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