gpt4 book ai didi

c++ - 为什么即使在 VS 调试器外部启动的程序也无法调用终止方法?

转载 作者:行者123 更新时间:2023-11-28 05:41:29 25 4
gpt4 key购买 nike

我已经编写了非常简单的程序并预计会崩溃,它崩溃了。现在,我已经设置了终止函数,但它不会被调用,程序会在不调用此函数的情况下崩溃。

我在调试器/外部调试器中都有测试程序,在调试/ Release模式下构建,但表现出相同的行为(至少没有调用我的终止函数)。我正在考虑 VS 2012 和 Windows 10。

void func()
{
cout<<"Aah you threw exception"<<endl;
}

int main(int argc, char* argv[])
{
set_terminate(func); //setting terminate function

int *p = NULL;

*p =11;
cout<<*p; //this will throw exception
}

最佳答案

C++ 不是 Java! 信号(或陷阱)可以通过取消引用 nullptr 来生成,但它不会在 C++ 异常中自动转换。在符合 POSIX 的系统上,您可以尝试使用 signal 函数来捕获 Throwaway Account 3 Million 提出的信号。在 Windows 上,您可以尝试使用 C structured exception handling .

如果你不这样做,并且仍然产生这样的陷阱,标准只是将其定义为未定义的行为,它通常会立即中止程序,绕过任何 set_terminateatexit 或您计划在受控程序终止时调用的任何函数。

关于c++ - 为什么即使在 VS 调试器外部启动的程序也无法调用终止方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36995358/

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