gpt4 book ai didi

c++ - Std::deque 直到程序退出才释放内存

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:32 28 4
gpt4 key购买 nike

在 linux 上,std::deque 直到程序退出才释放内存。完整代码如下。任何帮助将不胜感激!

#include <deque>
#include <vector>
#include <string>
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <queue>
#include <list>
#include <cstdio>
#include <cstdlib>

typedef boost::shared_ptr<std::vector<int> > VecPtr;
typedef std::deque< VecPtr > QueueType;

char buf[1024];
char line[1024];

int main()
{

{

int v=0;
QueueType deq;
for(int i=0; i<30;++i)
for(int j=0; j<1000;++j)
for(int k=0;k<1000;++k)
{
VecPtr p( new std::vector<int>);
deq.push_back(p);
}

std::cout<<"Done with increasing deq:deq size="<<deq.size()<<std::endl;
sleep(20);

std::cout<<"start decreasing deq size"<<std::endl;
while(deq.size()>0)
{
deq.pop_front();
}
std::cout<<"done with decreasing deq size,deq size="<<deq.size()<<std::endl;
}
std::cin.getline(line,sizeof(line));
return 0;
}

最佳答案

没错,pop_front() 不会释放由 push_back() 分配的存储空间如果你想在程序结束前释放它,你可以结束对象的生命周期。如果您想在对象的生命周期结束之前释放它,请考虑对 C++ 容器类使用“shrink-to-fit”习惯用法。

QueueType().swap (deq); // C++98
deq.shrink_to_fit(); // C++11

关于c++ - Std::deque 直到程序退出才释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834754/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com