Какая польза от сегмента bss?

Я знаю, что сегмент bss содержит неинициализированные переменные, которым будет присвоено 0 в качестве начального значения, но почему мы не просто используем сегмент данных для их хранения?

я читал, что это ускоряет выполнение, потому что загрузчик os инициализирует все эти переменные одновременно, вызывая memset, однако я не очень уверен, потому что загрузчик может вызвать memset, чтобы также инициализировать их в сегменте данных!

1 ответ

Потому что у вас может быть огромный набор неинициализированных значений. Вам придется заполнить двоичный файл нулями (или любым другим значением, если на то пошло, но что-то должно быть там), если вы собираетесь использовать раздел данных для этой цели. Представьте себе добавление мегабайта нулей в исполняемый файл...

Другие вопросы по тегам