Статические переменные размещаются внутри сегмента кода - они являются частью исполняемого образа и, следовательно, отображаются в уже инициализированном.
Статические переменные в пределах области действия обрабатываются одинаково, область видимости - это просто конструкция уровня языка.
По этой причине вам гарантируется, что статическая переменная будет инициализирована значением 0 (если не указано иное), а не неопределенным значением.
Есть некоторые другие аспекты инициализации, которые вы можете использовать в своих интересах - например, общие сегменты позволяют различным экземплярам исполняемого файла работать одновременно для доступа к одним и тем же статическим переменным.
В C ++ (глобальная область действия) статические объекты имеют свои конструкторы, вызываемые как часть запуска программы, под управлением библиотеки времени выполнения C. В Visual C ++, по крайней мере, порядок инициализации объектов может контролироваться прагмой init_seg .