就让内存分配失败一次吧
来源:互联网 发布:淘宝天天特价怎么报名 编辑:程序博客网 时间:2024/05/17 02:49
看到《高质量编程》上的一句话,“大多数初学者不懂得内存分配可能会失败的情况”,想想确实挺有意思,自己好像从没有内存分配失败,遂写一个小程序就让失败一次看看。
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[n];
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也终于在真正干活了,那几条杠杠相当醒目啊。
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[n];
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也终于在真正干活了,那几条杠杠相当醒目啊。
- 就让内存分配失败一次吧
- 教官,就让他重新考核一次吧
- 内存分配失败处理
- 内存分配失败
- malloc分配内存失败
- new内存分配失败
- malloc分配内存失败
- 内存分配失败的处理
- 漫谈C++内存分配失败
- 内存分配失败错误处理
- 内存分配失败错误处理
- 漫谈C++内存分配失败
- new 内存分配失败处理
- 内存分配失败错误处理
- Malloc最多一次能分配多少内存
- Malloc最多一次能分配多少内存
- 如何避免WinCE 内存分配失败?
- linux共享内存分配失败原因分析
- 远航验证码识别系统
- qq验证码识别系统
- IE和Firefox中Javascript和CSS的区别
- 找工作了。毕业了
- Silverlight2.0正式版已发布
- 就让内存分配失败一次吧
- mips汇编语言之将十进制整数转换为十六进制输出
- 看到关于windows盗版黑屏的讨论,觉得很多人很可悲
- 微软宣布20号起黑屏警告XP专业版盗版用户
- 在VC中调用VB编写的COM组件范例
- VB用XML实现在线翻译范例
- VC中调用XMLHTTP对象访问远程数据的方法
- VC中调用ADO对象访问数据库的范例
- 几句话弄清楚Java参数传值还是传引用