社区
C++ 语言
帖子详情
C++内存申请
PcrazyC
2008-12-08 01:53:11
有时候需要自己动态输入需要申请的内存大小,当内存不足时应该提示一下,想用TRY...CATCH来实现,但应该捕捉哪个异常呢?
try{
...}
catch(...)//这里应该是什么?
{}
...全文
205
13
打赏
收藏
C++内存申请
有时候需要自己动态输入需要申请的内存大小,当内存不足时应该提示一下,想用TRY...CATCH来实现,但应该捕捉哪个异常呢? try{ ...} catch(...)//这里应该是什么? {}
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
你在什么操作系统下编程?自己真的亲自遇到过内存不足?
C语言
内存
申请
/释放函数,
C++
内存
申请
/释放函数
申请
成功返回指向已分配
内存
的指针,
申请
失败返回NULL。printf("
申请
失败");:
申请
堆区空间,返回
申请
空间的地址,并将每个字节初始化为0。为元素个数,为元素大小。:
申请
成功返回指向已分配
内存
的指针,
申请
失败...
C++
内存
申请
、
内存
释放
在初步学习
C++
时,遇到分配
C++
中
内存
申请
C++
中
内存
申请
内存
分配三个区域 目前看到资料说,
C++
内存
分配分为三种方式,在静态存储区分配,在栈上分配,在堆上分配,这三者的不同首先在存储变量的生命周期不同,静态存储区存放静态变量和全局变量,在程序运行...
C/
C++
内存
申请
函数malloc、calloc、realloc
C/
C++
内存
申请
函数malloc、calloc、realloc
C/
C++
申请
和释放
内存
new 和 delete 是
C++
用于管理堆
内存
的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符。除此之外,new 在
申请
内存
的同时,还会...
C++
new运算符
申请
内存
:将调
C++ 语言
64,639
社区成员
250,578
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章