Bildiğim şey, global ve statik değişkenlerin .datasegmentte depolandığı ve başlatılmamış verilerin .bsssegmentte olduğu. Anlamadığım şey, neden başlatılmamış değişkenler için ayrılmış bir segmentimiz var? Başlatılmamış bir değişkenin çalışma zamanında atanmış bir değeri varsa, değişken hala .bssyalnızca segmentte mi var?
Aşağıdaki programında, aiçinde .datasegmanı ve biçinde .bsssegmenti; bu doğru mu? Anlayışım yanlışsa lütfen beni düzeltin.
#include <stdio.h>
#include <stdlib.h>
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[20]; /* Uninitialized, so in the .bss and will not occupy space for 20 * sizeof (int) */
int main ()
{
;
}
Ayrıca, aşağıdaki programı düşünün,
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}