Yang saya tahu adalah bahwa variabel global dan statis disimpan di .datasegmen, dan data yang tidak diinisialisasi ada di .bsssegmen tersebut. Yang tidak saya mengerti adalah mengapa kami memiliki segmen khusus untuk variabel yang tidak diinisialisasi? Jika variabel yang tidak diinisialisasi memiliki nilai yang ditetapkan pada waktu proses, apakah variabel tersebut masih ada di .bsssegmen saja?
Dalam program berikut, aada di .datasegmen, dan bdi .bsssegmen; Apakah itu benar? Mohon koreksi saya jika pemahaman saya salah.
#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 ()
{
;
}
Juga, pertimbangkan program berikut,
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}