有这个疑问很久了,今天搜了一上午资料想知道为什么。我们都知道,C++ 11 ISO标准中,未初始化的全局变量会被置0,原文如下。
Variables with static storage duration (3.7.1) or thread storage duration (3.7.2) shall be zero-initialized (8.5)
before any other initialization takes place.
以上摘自C++11 ISO文档从以上这段话不难看出,确切说,全局变量是先被初始化为0,然后才进行其他的初始化。
好,既然标准如此,这么一个规定,到底是个死规定,还是有背后的技术原因?
查阅了很多文档。找到了一些信息,大体摘录一些。
Security: leaving memory alone would leak information from o