C++内存申请

PcrazyC 2008-12-08 01:53:11
有时候需要自己动态输入需要申请的内存大小,当内存不足时应该提示一下,想用TRY...CATCH来实现,但应该捕捉哪个异常呢?

try{
...}
catch(...)//这里应该是什么?
{}
...全文
205 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
PcrazyC 2008-12-09
  • 打赏
  • 举报
回复
__try和__exception ?


能不能举个例子?
leiXure 2008-12-09
  • 打赏
  • 举报
回复
std::bad_alloc

楼主还可看看 Win32 SEH 相关文章
jiww03 2008-12-09
  • 打赏
  • 举报
回复
是__try {}__except(){}
dufutang 2008-12-09
  • 打赏
  • 举报
回复
受益非浅高手共同提高
Zark 2008-12-09
  • 打赏
  • 举报
回复
8楼的sample

// exceptions_try_except_Statement.cpp

// Example of try-except and try-finally statements

#include <stdio.h>

#include <windows.h> // for EXCEPTION_ACCESS_VIOLATION

#include <excpt.h>

int filter(unsigned int code, struct _EXCEPTION_POINTERS *ep) {

puts("in filter.");

if (code == EXCEPTION_ACCESS_VIOLATION) {

puts("caught AV as expected.");

return EXCEPTION_EXECUTE_HANDLER;

}

else {

puts("didn't catch AV, unexpected.");

return EXCEPTION_CONTINUE_SEARCH;

};

}

int main()

{

int* p = 0x00000000; // pointer to NULL

puts("hello");

__try{

puts("in try");

__try{

puts("in try");

*p = 13; // causes an access violation exception;

}__finally{

puts("in finally. termination: ");

puts(AbnormalTermination() ? "\tabnormal" : "\tnormal");

}

}__except(filter(GetExceptionCode(), GetExceptionInformation())){

puts("in except");

}

puts("world");

}

jackzhhuang 2008-12-08
  • 打赏
  • 举报
回复
相比用bad_alloc,我更喜欢用__try和__exception

党出现内存不足时,指针就会指向NULL,这个时候若使用指针就会产生异常,进而跳到__exception处理,省去判断,也比较保险。
SearchLife 2008-12-08
  • 打赏
  • 举报
回复
在嵌入式编程中应该用得多一些吧
SearchLife 2008-12-08
  • 打赏
  • 举报
回复
抛出bad_alloc异常,如果你设置了new_handler,则不断调用之,直到内存分配成功。
jiww03 2008-12-08
  • 打赏
  • 举报
回复
new..==NULL就行了
jiww03 2008-12-08
  • 打赏
  • 举报
回复
try..catch不能捕获内存异常
ysuliu 2008-12-08
  • 打赏
  • 举报
回复
如果你在linux下,去查一下 man new
如果你在windows下,去看msdn的 new操作符

看看他们失败了会抛出什么异常,一查就出来了。。你应该充分利用这些系统提供的帮助,不仅能最快解决问题,也能提高自己的能力。。
Mougou 2008-12-08
  • 打赏
  • 举报
回复
bad_alloc
taodm 2008-12-08
  • 打赏
  • 举报
回复
你在什么操作系统下编程?自己真的亲自遇到过内存不足?

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧