您的位置:首页 > 其它

就让内存分配失败一次吧

2008-10-16 01:41 323 查看
看到《高质量编程》上的一句话,“大多数初学者不懂得内存分配可能会失败的情况”,想想确实挺有意思,自己好像从没有内存分配失败,遂写一个小程序就让失败一次看看。

int _tmain(int argc, _TCHAR* argv[])
{
double a = 2;
double b = 28;
double n = pow(a,b);
n *= 1.5; //改为2就是2G的分配量了
cout<<"n = "<<n<<endl;
int *p = new int
;
if(NULL != p)
{
memset(p,0,n);
cout<<"success!"<<"p: "<<p<<endl;
//防止程序退出
for(int i = 1;i <1;i++)
{
i--;
}
}
else
cout<<"Error!";

return 0;
}

此处将内存分配量设为1.5G,事实上已经接近极限了,这是内存图



当设成2G的时候,直接就弹出错误了,这也符合winNT的内存分配准则,应用程序2G的可用内存。

ps:在运行上述程序时观看进程的内存占用变化情况真是一件伤心悦目的事情啊,exploer最后只剩2m,实在是像榨汁机一样的在榨干内存啊。而pagefile也终于在真正干活了,那几条杠杠相当醒目啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: