Bildiğim şey, global ve statik değişkenlerin .data
segmentte depolandığı ve başlatılmamış verilerin .bss
segmentte 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 .bss
yalnızca segmentte mi var?
Aşağıdaki programında, a
içinde .data
segmanı ve b
içinde .bss
segmenti; 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 ?** */
}