我非常有信心在程序启动时分配(并初始化,如果适用)全局声明的变量。
int globalgarbage;
unsigned int anumber = 42;
但是在函数中定义的静态函数呢?
void doSomething()
{
static bool globalish = true;
// ...
}
globalish
的空间是什么时候分配的?我猜程序什么时候开始。但是它也会被初始化吗?还是在第一次调用 doSomething()
时初始化?
原文由 Owen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我对此很好奇,所以我编写了以下测试程序并使用 g++ 4.1.2 版本对其进行了编译。
结果不是我所期望的。直到第一次调用函数时才调用静态对象的构造函数。这是输出: