社区
系统维护与使用区
帖子详情
g++不支持异常处理 ?
yangrunhua
2000-02-15 05:11:00
有如下:
try
{
char *buffer=new char[1000000000];
if (buffer==NULL)
throw "out of memory";
}
catch(char*string)
{
cout<<string<<endl;
}
运行时竟然结果不是输出out of memory而是Aborted(core dumped)
Why?
...全文
419
7
打赏
收藏
g++不支持异常处理 ?
有如下: try { char *buffer=new char[1000000000]; if (buffer==NULL) throw "out of memory"; } catch(char*string) { cout<<string<<endl; } 运行时竟然结果不是输出out of memory而是Aborted(core dumped) Why?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenshuishui
2001-05-31
打赏
举报
回复
同意jansenzhu(),直接试一下
try
{
throw "out of memory";
}
catch(char*string)
{
cout<<string<<endl;
}
skt642
2001-05-31
打赏
举报
回复
67017关注!
茂奇软件
2000-02-20
打赏
举报
回复
[1000000000];
perhaps the interage have overfollow.
you can try it directly.
try
{
throw "out of memory";
}
catch(bad_alloc e) //也可以catch(exception e),e.what()报的信息不同
{
cout<<e.what()<<endl;
}
catch(char*string)
{
cout<<string<<endl;
}
netmare
2000-02-16
打赏
举报
回复
我在linux下试了一下,sintony说的有理,是new时系统throw的异常.
netmare
2000-02-16
打赏
举报
回复
在linux下将程序改为
#include <exception> //注意是exception而不是exception.h
#include <new>
try
{
char *buffer=new char[1000000000];
if (buffer==NULL)
throw "out of memory";
}
catch(bad_alloc e) //也可以catch(exception e),e.what()报的信息不同
{
cout<<e.what()<<endl;
}
catch(char*string)
{
cout<<string<<endl;
}
sintony
2000-02-15
打赏
举报
回复
因为char *buffer=new char[1000000000];
本身就throw "Aborted(core dumped)"
你catch 的是系统的出错信息
netmare
2000-02-15
打赏
举报
回复
core dump可能发生在catch之后,因为cout是带缓冲的,所以未显示出来,用cerr试试.
从你的程序看,catch时除了显示错误信息后未作其他处理,若在catch之后又使用了buffer就会core dump了
C++11语言特性和标准库-第一部
讲解C++11的新语法.讲解C++11的新增标准库.讲解C++11的新特性.不细说C++98的语法和标准库.学习C++11需要有C++98的基础。课程会结合项目代码和标准库源码来讲解。介绍了实际产品开发中常用到的C++11特性和库.项目代码可以通过vs2017和
g++
编译过.C++11特性是C++20以前更新最多的版本,C++14,C++17特性更新少很多.
C++的
异常处理
机制及其捕获方式的探讨
如今说到
异常处理
机制和try…catch这样的组合,大多数程序员第一反应往往是Java,的确Java的
异常处理
机制相当完善。今天翻了一下C++
异常处理
机制,感觉相比Java的机制而言,有更多的细节需要自己来处理和维护,确实没有Java的机制来的完善,简单地总结了一下目前的收获,希望能够起到抛砖引玉的作用。一、抛出异常和try…catch块 C++的try…catch块与java的很类似。与Java
linux下的c++头文件:namespace
linux下的C++编程与windows下是有不同的,主要就在于头文件。 windows下的头文件都是.h文件,比如VC6.0。现在linux下的头文件都是没有.h的,因为,我用的
g++
编译器 版本较高,所以就会出现这样的区别。 比如最常用的C++头文件iostream 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的
More Effective C++----(15)了解
异常处理
的系统开销
Item M15:了解
异常处理
的系统开销 为了在运行时处理异常,程序要记录大量的信息: 无论执行到什么地方,程序都必须能够识别出如果在此处抛出异常的话,将要被释放哪一个对象;程序必须知道每一个入口点,以便从try块中退出;对于每一个try块,他们都必须跟踪与其相关的catch子句以及这些catch子句能够捕获的异常类型。 这种信息的记录不是没有代价的。虽然确保程序满足异常
c语言编译有未经处理的异常,C++语言学习(十八)——
异常处理
C++语言学习(十八)——
异常处理
一、C语言
异常处理
异常是指程序在运行过程中产生可预料的执行分支。如除0操作,数组访问越界、要打开的文件不存在。Bug是指程序中的错误,是不被预期的运行方式。如野指针、堆空间使用结束未释放。C语言中处理异常的方式一般是使用if....else...分支语句。double divide(double a, double b){const double delta = ...
系统维护与使用区
19,612
社区成员
74,602
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章