Yang saya tahu adalah bahwa variabel global dan statis disimpan di .data
segmen, dan data yang tidak diinisialisasi ada di .bss
segmen 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 .bss
segmen saja?
Dalam program berikut, a
ada di .data
segmen, dan b
di .bss
segmen; 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 ?** */
}