内联静态数据的初始化
Initialization of inline static data
我想知道静态内联数据是如何以及何时在C++中初始化的(例如在 gcc 或 clang 中(。我知道这是特定于某些架构的问题,与C++标准无关。
我知道对于静态/全局非内联数据,gcc 正在使用.init
和.fini
部分来构造和破坏具有此类限定符的对象,但这不适用于内联静态数据,因为它可以在许多翻译单元中初始化,因此init
部分最终会为单个对象进行许多初始化,这是错误的。
有谁知道实现是如何工作的?
需要明确的是,我对这些内联变量初始化的实现感兴趣。
该实现等效于函数局部静态的实现,后者也"冒着"被重复初始化的风险:创建一个额外的保护变量并检查,使初始化只发生一次。 这个过程的组装非常简单。
相关文章:
- 如何使用数据对象上的常量指针初始化类
- 如何在 malloc 内存中初始化非 POD 数据
- 内联静态数据的初始化
- 是否可以使用右值初始化数据成员?
- 构造函数正在初始化数据成员
- 初始化数据成员取决于构造函数中的条件
- openGL如何处理发送给它的空/未初始化数据?
- 如何在C 11中正确初始化数据成员
- 在具有初始化的声明中,是否可以使用对未初始化数据的引用
- 使用值初始化的数组对零初始化数据
- 在C++中,如果我们不在构造函数中初始化数据成员,那么类中数据成员的值会是多少
- 为什么我们需要构造函数 C++,我们可以通过函数(初始化数据或访问私有数据成员)来做同样的事情
- 正在初始化数据文件中的静态常量成员
- 用成员函数初始化数据成员
- 在不初始化数据的情况下调整 std::vector C++的大小<char>
- 尝试在构造函数中初始化数据成员,但失败.为什么
- 在c++中使用初始化列表初始化数据成员引用
- 如何创建一个可以初始化c++数据类型的类
- 当初始化数据类型char*和非char*时
- 代码是否被视为可移植可执行文件格式中的初始化数据,初始化数据和单元化数据之间的确切区别是什么