在MFC中new失败会抛出CMemoryException异常而不是返回NULL;
网上说的用 new (nothrow) 也提示nothrow不认识。
所以只有使用try catch 来处理
我不太懂他们执行的流程。一般new失败,别人都是在catch中使程序退出若是我一定要new成功呢,如何使
try{new}catch(CMemoryException ex)
{////
}
一直try到我满意为止?有人说try catch可以返回它调用的地方一直new到你满意。
具体该如何写呢?我不希望new失败,new失败后也要想办法让它new成功。有什么好办法吗?
(退出程序很显然是不行的。你遇到过:运行游戏之类的程序,然后说,对不起你的内存不足~然后退出的吗)
网上说的用 new (nothrow) 也提示nothrow不认识。
所以只有使用try catch 来处理
我不太懂他们执行的流程。一般new失败,别人都是在catch中使程序退出若是我一定要new成功呢,如何使
try{new}catch(CMemoryException ex)
{////
}
一直try到我满意为止?有人说try catch可以返回它调用的地方一直new到你满意。
具体该如何写呢?我不希望new失败,new失败后也要想办法让它new成功。有什么好办法吗?
(退出程序很显然是不行的。你遇到过:运行游戏之类的程序,然后说,对不起你的内存不足~然后退出的吗)
解决方案 »
- 为什么toolbar加一张图标资源之后,图标会有黑点呢??
- OPENGL为什么清除深度缓存后就看不见纹理了 急 非常急啊。。。。
- 大家帮我看一下我的代码关于路径填充的,为什么不成功啊? 急!!!!
- CDaoDatabase::Execute创建表后不能马上用CDaoTableDef::Open()打开?
- NT Service 竟然成为一个郁闷问题,谁来帮帮我?
- 我用了线程,为什么在debug下调是成功,但运行出错?在releaase下运行就没事呢?
- vc7中用chtmleditview不能打开asp文件,怎么办?
- 救命!我要受不了了,关于CDatabase的ExecuteSQL问题
- 一个关于网络通讯的问题
- 不使用atl,也不使用mfc,怎样写com组件并能在ie中调用
- 求助:在windows下用Cygwin编译wireshark遇到问题?
- 这个要怎么做啊?让文件呈现选中状态!
比如
int* p = new[0xffffffff];这个基本上都是new失败的. 至少在win32上是无法成功的.
是的 我看到很多人catch到异常
就是exit(1);的多
要么就是做些擦屁股的活,然后终止程序可是你总不希望你玩wow时因为内存不足退出?
当然只是比喻。我知道是我的程序问题了。但是我就是希望new能成功 抛开一个错误的size不讲若是内存足够,并且size是一个合法值 new一定是100%成功的了?
即使内存够也不一定100%成功
try{
new xxxxx;
}catch(...){返回错误什么的.
}
bLL = true;
while(bLL)
try{new
bLL = false;
}catch(CMemoryException ex)
{
bLL = true;
////
}