2010-02-03 7 views
1

У меня есть одна статическая переменная, объявленная внутри функции, которая явно не инициализирована нулем.Инициализация статических переменных функции

Все ли неинициализированные статические переменные внутри функций установлены на ноль по умолчанию, как и статические переменные на глобальном (файле) уровне?

ответ

6

Все статические переменные без явного инициализатора инициализируются нулем.

Все переменные, входящие в сегмент BSS, инициализируются нулем.

В C все глобальные и статические переменные без явного инициализатора входят в сегмент BSS и, следовательно, по умолчанию равны нулю.

+0

Хмм .. спасибо codaddict .., но во время отладки я обнаружил, что значение мусора хранится в одной из статических переменных функции .. но было несовместимо, что нуль хранится в этой переменной, а иногда сохраняется мусор. – inquisitive

+2

@ любознательный. Пожалуйста, покажите нам часть кода с таким поведением. – codaddict

+0

@inquisitive: одна из возможностей заключается в том, что переполнение буфера затопило вашу статическую переменную. Конечно, есть и другие возможности. –