はい、初期化されていない静的変数はデフォルトで 0 に初期化されます。これは C では常に当てはまります。
データの保存場所は実装に依存します....BSS(シンボルによって開始されるブロック)に入るのは、初期化された0の静的変数(i
あなたの場合)であることがわかりました。
たとえば、0 以外の初期化された静的は .DATA に入りstatic int i=2;
ます。
ポイントを示すには:
int main(int argc, char * argv[])
{
return 0;
}
「test.c」に保存
> gcc test.c
> size a.out
text data bss dec hex filename
1056 252 8 1316 524 a.out
次に、次のように更新します。
int main(int argc, char * argv[])
{
static int i;
return 0;
}
> gcc test.c
> size a.out
text data bss dec hex filename
1056 252 12 1316 524 a.out
次のように再度変更します。
int main(int argc, char * argv[])
{
static int i = 2;
return 0;
}
> gcc test.c
> size a.out
text data bss dec hex filename
1056 256 8 1316 524 a.out