在 C++98 中,如何在不展开的情况下退出进程?

How to exit a process without any unwinding in C++98?

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

我有一个项目:

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

简而言之:

C++98 中的哪个函数等同于 C++11 的 std::quick_exit

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

Linux下对应的是什么?

您可以使用 <cstdlib> 中的 abort()。它向进程发送 SIGABRT,如果未捕获到信号,程序将终止,而不调用任何破坏例程,如 atexit() 或任何析构函数。

更多信息在这里:link

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