8得票2回答
在静态初始化期间创建和使用向量是安全的吗?

我有一份C++代码,其中声明了由函数调用初始化的静态生命周期变量。被调用的函数构造一个vector实例并调用其push_back方法。这份代码是否存在因C++静态初始化顺序惨败而引起的风险?如果没有,为什么? 补充信息: What's the "static initialization...

8得票1回答
JVM的静态初始化

语言: Java 版本: 12.0.2 以下是字符串源代码: /* @implNote * The actual value for this field is injected by JVM. The static * initialization block is used to ...

7得票1回答
从全局对象的构造函数调用std::atexit的顺序

cppreference关于std::atexit的说明: 这些函数可以与具有静态存储期的对象的销毁和彼此同时调用,保证如果A的注册在B之前,则对B的调用在对A的调用之前被排序,静态对象构造函数和对atexit的调用之间的排序也适用于此。 我理解这段话的意思是,如果在静态初始化期间调用...

7得票1回答
为什么gcc接受带const限定符的变量作为初始化器?

当使用-std=c17 -pedantic-errors -Wall -Wextra在最新版本的gcc(或clang)中编译此代码时。 static const int y = 1; static int x = y; 如果我完全确定这不是有效的C语言而是约束违规,那么我将得不到编译器诊...

7得票2回答
本地静态函数对象的初始化是否线程安全?

以下两个函数生成不同的程序集,这告诉我们它们是不同的。请问有人能告诉我它们的区别在哪里?并且func2中的本地静态变量初始化是线程安全的吗?如果答案取决于编译器,我想知道最常见的编译器如何处理func2。 int func1(int val) { const auto impl = ...

7得票2回答
块作用域静态变量或线程存储期变量的初始化失败是什么?这个规范不够明确吗?

在回答这个问题并且在标准文献中没有找到令人满意的答案后,我开始思考。标准声明了以下关于提到的变量初始化的内容: §6.7 [stmt.dcl] p4 否则,当控制第一次通过它的声明时,将初始化此类变量;当完成初始化后,此类变量被视为已初始化。如果初始化通过抛出异常退出,则初始化尚未完成,因...

7得票2回答
为什么这些函数本地静态对象的销毁顺序不是它们初始化顺序的相反顺序?

我有两个函数局部的静态对象,One和Two。One的构造函数和析构函数都通过GetTwo()访问Two: #include <iostream> struct One; struct Two; const One& GetOne(); const Two& G...

7得票3回答
能否确保在“静态初始化”阶段仅调用函数?

我在想是否有可能确保函数仅在程序的静态初始化阶段调用? 举个例子,假设我有一个包含std::map对象并公开其insert和at方法的单例类。我想要确保从其中读取数据(即使用at方法)是线程安全的,这需要确保没有任何东西修改了数据(例如使用insert方法)。 该映射表仅在静态初始化期间填...

7得票2回答
在 Kotlin CI 测试中,Java 中的静态 final 变量初始化不正确。

我管理一个开源项目,有一个用户报告了一个情况,根据Java类中静态变量初始化的顺序我认为这是不可能的。一个static final类变量的值是错误的,显然是由于依赖关系的静态方法基于其自己的静态 final 变量产生了不同的结果所致。 我想要理解发生了什么,以便找到最佳的解决办法。目前,我感...