gpt4 book ai didi

c++ - 为什么未处理的异常会导致段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:32 25 4
gpt4 key购买 nike

这是一个最小的例子:

[joel@maison various] (master *)$ cat throw.cpp 

#include <iostream>


int main(int argc, char* argv[])
{
throw("pouet pouet");
}

[joel@maison various] (master *)$ ./a.out
terminate called after throwing an instance of 'char const*'
Aborted (core dumped)

阅读文档,似乎默认的终止处理程序是 abort()。我在中止手册页中找不到任何关于触发段错误的内容。

最佳答案

抛出异常而不处理它会调用 abort(),这会引发 SIGABRT

您可以通过以下方式验证

#include <iostream>
#include <stdexcept>
#include <signal.h>

extern "C" void handle_sigabrt(int)
{
std::cout << "Handling and then returning (exiting)" << std::endl;
}

int main()
{
signal(SIGABRT, &handle_sigabrt);

throw("pouet pouet");
}

Demo

关于c++ - 为什么未处理的异常会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41765875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com