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

标签 c++ c++11 global-variables destructor stack-unwinding

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

我有一个项目:

  1. 它有一个全局对象,并且在全局对象的析构函数中存在 fatal error ;
  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下对应的是什么?

最佳答案

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

更多信息在这里:link

编辑:std::quick_exit正常退出,同时调用 abort()导致异常终止,不知道这是否是一个问题。

关于c++ - 在 C++98 中,如何在不展开的情况下退出进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43062192/

相关文章:

c++ - 递归 typedef 函数定义:std::function 返回自己的类型

c++ - 默认构造函数的不同声明的链接器错误

python - 全局字典不需要关键字 global 来修改它们吗?

Python:如何创建带有设置参数的函数指针?

c++ - 通过 g++ 链接到外部静态库

c++ - 使用指针的模板函数

c++ - Boost.Spirit mini_xml2.cpp 示例无法由 C++11、Boost 1.55 编译

c++ - 创建全局已知并自动删除的临时目录(C++)?

c++ - 在 C++ vs2015 中嵌入 python 3

c++ - 非成员运算符重载应该放在哪里?