gpt4 book ai didi

c++ - 为什么全局或静态对象在程序退出时会导致崩溃?

转载 作者:可可西里 更新时间:2023-11-01 18:29:28 30 4
gpt4 key购买 nike

C++ Singleton design pattern , obecalp提到:

For many larger programs, especially those with dynamic libraries. Any global or static object that's none primitive can lead to segfaults/crashes upon program exit on many platforms due to order of destruction issues upon libraries unloading. This is one of the reasons many coding conventions (including Google's) ban the use of non-trivial static and global objects.

有人可以详细说明为什么会发生这种情况吗?也许是一个例子来解释它?

最佳答案

您可能听说过 static initialization order fiasco正在构建的全局引用另一个尚未构建的全局。这个问题的一般解决方案是使用惰性初始化对象(首次使用时初始化)。

好吧,如果一个对象的析构函数引用另一个已经被析构的对象,那么在销毁时可能会发生同样的惨败;不幸的是,这个问题没有银弹解决方案,因为析构函数的代码可以任意复杂。

一种解决方案是简单地禁止使用这种不礼貌的功能。

关于c++ - 为什么全局或静态对象在程序退出时会导致崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157476/

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