我所知道的是,全局变量和静态变量存储在 .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 ?** */
}