Если глобальная или статическая переменная C не инициализирована явно, а неявно инициализируется, находится ли она в разделе .data или .bss? [closed]

-2
21.10.2018, 22:14
1 ответ

Do "initialized" and "unitiailized" in the quote mean explicitly or implicitly or either?

«Инициализировано» означает, что переменной присваивается явное значение (, которое может быть равно нулю )вместе с ее объявлением в коде. «Неинициализированная» означает, что переменная не инициализируется явно во время объявления,что в вашей терминологии соответствует «неявно инициализированному»; если это глобальная переменная, ее значение равно нулю.

If a global or static C variable is not explicitly initialized, but implicitly initialized, is it in.data or.bss section?

Согласно вашей цитате:

.bss Uninitialized global and static C variables

Далее:

Does it matter whether the global or static C variable is implicitly initialized to zero or nonzero?

Неинициализированные глобальные переменные по умолчанию имеют нулевое -значение.

So if a global or static C variable is initialized to zero, should it be in.data or.bss section?

По вашей цитате:

.bss Uninitialized global and static C variables, along with any global or static variables that are initialized to zero.

Обратите внимание, что ничто из этого не является требованием ; в частности, предполагается, что неинициализированные сегменты данных инициализируются значениями, соответствующими нулю в C на платформе. Обычно это имеет место в системах, использующих ELF, но C позволяет представить нуль битовой комбинацией, отличной от всех нулей.

Однако на практике глобальные или статические переменные, инициализированные нулем, явно или нет, являются частью .bssв двоичных файлах ELF.

2
28.01.2020, 05:15

Теги

Похожие вопросы