私が知っているのは、グローバル変数と静的変数が.data
セグメントに格納され、初期化されていないデータが.bss
セグメントにあることです。私が理解していないのは、初期化されていない変数専用のセグメントがあるのはなぜですか?初期化されていない変数に実行時に値が割り当てられている場合、変数はまだ.bss
セグメントにのみ存在しますか?
次のプログラムで a
は、.data
セグメントb
内にあり、.bss
セグメント内にあります。あれは正しいですか?私の理解が間違っている場合は親切に私を修正します。
#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 ()
{
;
}
また、次のプログラムを検討してください、
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}