On linux, std::deque does not release memory until program exits. The complete code is below. Any help will be greatly appreciated!
#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;
}
See Question&Answers more detail:os