У програмуванні, термін .bss або bss використовується в багатьох компіляторах і лінкерах () як назва для розділу об'єктного файлу або виконуваного файлу, що містить статичні змінні які не були явно ініціалізовані до певного значення. Ця область часто називається "bss секцією" або "bss сегментом".
Як правило в об'єктному файлі зберігається лише довжина bss секції, і не зберігається жодних даних. виділяє пам'ять для bss секції під час завантаження програми. На деяких платформах, частина або вся bss секція ініціалізується нулями. UNIX-подібні операційні системи і Windows ініціалізує bss секцію нулями, таким чином всі статично алоковані змінні в C і C++, які ініціалізуються такими значеннями, що всі їх біти будуть заповнені нулями, будуть розміщені у bss сегменті. Операційні системи можуть використовувати техніку, яка називається заповненням нулями за потребою () аби ефективно реалізувати bss сегмент. У вбудованому програмному забезпеченні, bss сегмент вказує на пам'ять, яка буде ініціалізована нулями середовищем виконання C перед тим як буде виконано вхід у main(). Деякі середовища виконання C можуть дозволяти, щоб частина bss сегмента не була ініціалізована; змінні C повинні розміщуватися у даній частині bss сегмента явним чином.
BSS в C В C, статично-алоковані об'єкти без явного ініціалізатора значення будуть ініціалізовані нулями (для арифметичних типів) або нульовим вказівником (для вказівних типів). В реалізації C, як правило, нульові значення і вказівники у бітовому представленні складаються лише із бітів з нульовими значеннями (хоча це не вимагається стандартом C). Таким чином, сегмент BSS як правило містить всі неініціалізовані об'єкти (змінні і константи), що оголошені в області видимості файлу (тобто, за межами будь-якої функції) а також не ініціалізовані локальні статичні змінні (локальні змінні оголошені із ключовим словом static ); статичні локальні константи повинні ініціалізуватися в оголошенні, оскільки вони не мають окремого оголошення, вони як правило не розміщуються у BSS секції, хоча вони можуть явним чи неявним чином ініціалізувати в нульове значення.
, автор мови C і програміст, говорить, "Деякі люди люблять запам'ятовувати цей сегмент, як 'Краще залишити місце'" ("Some people like to remember it as 'Better Save Space'). Оскільки BSS сегмент містить змінні, які ще не мають будь-якого значення, не потрібно зберігати представлення цих змінних. В об'єктний файл записується розмір BSS сегмента, але BSS (на відміну від сегмента даних) не займає ніякого фактичного місця в об'єктному файлі."Peter van der Linden, Expert C Programming: Deep C Secrets , Prentice Hall 1994, p. 141
Примітки
Посилання