4

在 C++11 或更高版本中,我们可以调用std::quick_exit退出进程而不进行任何展开,即不会调用析构函数 [after | 期间] std::quick_exit

我有一个项目:

  1. 它有一个全局对象,全局对象的析构函数有一个致命的bug;
  2. 我无法访问全局对象的来源;
  3. 如果我可以std::quick_exit在函数的最后一行调用main,则不会触发该错误;
  4. 出于某种原因,该项目必须使用 C++98 编译器进行编译;也就是说,我不能调用std::quick_exitC++98 编译器。

简而言之:

C++98 中的什么函数相当于 C++11 的std::quick_exit

在 Windows 下,我可以调用ExitProcess(0)强制退出进程而不进行任何清理。

Linux下的对应物是什么?

4

1 回答 1

3

您可以使用abort()来自<cstdlib>. 它向SIGABRT一个进程发送一个信号,如果没有捕获到信号,则程序终止,而不调用任何破坏例程,如atexit()或任何析构函数。

更多信息在这里:链接

编辑:std::quick_exit正常退出,调用abort()异常终止,不知道是不是问题。

于 2017-03-28T08:47:56.960 回答