wangcy6 / weekly

每周分享 技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统设计
https://wangcy6.github.io
Apache License 2.0
11 stars 1 forks source link

[每日一问] -2019年12月27日 在gdb调试Segmentation fault-栈溢出时候,c++程序为不能捕获? #38

Open watchpoints opened 4 years ago

watchpoints commented 4 years ago

微信图片_20191227104144

#define MAX_LEN 1024*1024*10 //10M
 int big[MAX_LEN];//Segmentation Fault
watchpoints commented 4 years ago
异常 描述
std::exception 该异常是所有标准 C++ 异常的父类。
std::bad_alloc 该异常可以通过 new 抛出。
std::bad_cast 该异常可以通过 dynamic_cast 抛出。
std::bad_exception 这在处理 C++ 程序中无法预期的异常时非常有用。
std::bad_typeid 该异常可以通过 typeid 抛出。
std::logic_error 理论上可以通过读取代码来检测到的异常。
std::domain_error 当使用了一个无效的数学域时,会抛出该异常。
std::invalid_argument 当使用了无效的参数时,会抛出该异常。
std::length_error 当创建了太长的 std::string 时,会抛出该异常。
std::out_of_range 该异常可以通过方法抛出,例如 std::vector 和 std::bitset<>::operator[]()。
std::runtime_error 理论上不可以通过读取代码来检测到的异常。
std::overflow_error 当发生数学上溢时,会抛出该异常。
std::range_error 当尝试存储超出范围的值时,会抛出该异常。
std::underflow_error 当发生数学下溢时,会抛出该异常。

image

aixi commented 4 years ago

因为这不是程序抛出异常,而是操作系统给进程发了一个信号,把进程结束了