我不知道下面的代码有什么问题!我正在删除所有指针,但是当我使用“top”命令查看内存时,我可以看到仍然有大量内存分配给程序。我在这里缺少一些东西来释放内存吗?
#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;
}
此代码中没有泄漏(假设在 allcoation 之后和释放之前没有抛出异常)。您没有看到内存下降的原因是 CRT 可能不会释放您所占用的内存delete
立即回到流程。它可能会保留它以供将来使用。但是,保证一旦进程终止,内存就会被释放。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)