Mey*_*sam 2 c++ pointers memory-management vector
我不知道以下代码有什么问题!我删除所有的指针,但是当我使用"顶"命令来观看的记忆,我可以看到,仍然大量内存分配给程序.我在这里遗漏了什么来释放记忆吗?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int*> container;
vector<int*>::iterator itr;
unsigned long long i;
for(i = 0; i < 10000000; i++)
{
int* temp = new int();
*temp = 1;
container.push_back(temp);
}
for(itr = container.begin(); itr != container.end(); itr++)
{
delete *itr;
*itr = NULL;
}
container.clear();
cout<<"\nafter clear\n";
while(1)
{
sleep(1000000);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码中没有泄漏(假设在allcoation之后和解除分配之前没有抛出异常).您没有看到内存下降的原因是CRT可能无法释放您delete立即返回进程的内存.它可能会保留以备将来使用.但是,一旦进程终止,就可以保证释放内存.