Какая польза от сегмента bss?
Я знаю, что сегмент bss содержит неинициализированные переменные, которым будет присвоено 0 в качестве начального значения, но почему мы не просто используем сегмент данных для их хранения?
я читал, что это ускоряет выполнение, потому что загрузчик os инициализирует все эти переменные одновременно, вызывая memset, однако я не очень уверен, потому что загрузчик может вызвать memset, чтобы также инициализировать их в сегменте данных!
1 ответ
Потому что у вас может быть огромный набор неинициализированных значений. Вам придется заполнить двоичный файл нулями (или любым другим значением, если на то пошло, но что-то должно быть там), если вы собираетесь использовать раздел данных для этой цели. Представьте себе добавление мегабайта нулей в исполняемый файл...