The following codes didn't release the memory consumed for 3000 elements even after i pops out all the elements from the qInt queue. What is the reason ?
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
By defalut std containers do not deallocate memory once they have reserved it. The std::queue is generally implemented on type of std::dequeue which offers shrink_to_fit. If you are not using c++ 11 use the swap idiom.
if you release/free/delete a heap memory . it doesn't mean that the memory consumption will immediately come down . the memory management libraries have there own caches of free memory which they would release after reaching a threshold .
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With