来自C背景,我一直认为POD类型(例如整数)从未在C++中自动进行零初始化,但似乎这是完全错误的!
我的理解是,只有'裸'非静态POD值不会被填零,如代码片段所示.我做对了,还有其他重要的案例我错过了吗?
static int a;
struct Foo { int a;};
void test()
{
int b;
Foo f;
int *c = new(int);
std::vector<int> d(1);
// At this point...
// a is zero
// f.a is zero
// *c is zero
// d[0] is zero
// ... BUT ... b is undefined
}
Run Code Online (Sandbox Code Playgroud) 全局内存是用C++初始化的吗?如果是这样,怎么样?
(二)澄清:
当程序启动时,在初始化基元之前,内存空间中的内容将成为全局内存?我试图了解它是否被清零,或者例如垃圾.
情况是:可以instance()在初始化之前通过调用设置单例引用:
MySingleton* MySingleton::_instance = NULL;
Run Code Online (Sandbox Code Playgroud)
并获得两个单例实例?
在单个多个实例上查看我的C++测验...