初始化时内存将分配给 "Uninitialized Static variable" 在哪里?
Where memory will be allocated to "Uninitialized Static variable" upon initialization?
未初始化的静态变量总是分配在 BSS 中。而 .bss 部分是静态的,因为内存是在编译时分配的。
根据可执行文件中的许多书籍 "only variables that are initialized to a nonzero value occupy space"。
程序加载到内存后,未初始化的静态变量仍然是.bss。
**函数初始化时会发生什么? **
它会被转移到其他地区吗?
.bss 不占用可执行文件中的space。当程序启动时,.bss 被分配并填充为 0。所有未初始化的对象都位于那里。所以当你初始化变量内存时分配。
引用的其余部分:
"In the executable file, only variables that are initialized to a nonzero value occupy space."
即当可执行文件加载到内存中时,需要的 space 被分配
初始化时,内存分配给“未初始化的静态变量”,并移至.data 部分。
代码文件:
int a,b,c;
int main()
{
a=1;
b=2;
c=3;
scanf("%d",a);
}
执行:
# size a.out
text data bss dec hex filename
1318 284 16 1618 652 a.out
# size core.18521
text data bss dec hex filename
28672 180224 0 208896 33000 core.18521 (core file invoked as ./a.out)
未初始化的静态变量总是分配在 BSS 中。而 .bss 部分是静态的,因为内存是在编译时分配的。 根据可执行文件中的许多书籍 "only variables that are initialized to a nonzero value occupy space"。 程序加载到内存后,未初始化的静态变量仍然是.bss。
**函数初始化时会发生什么? ** 它会被转移到其他地区吗?
.bss 不占用可执行文件中的space。当程序启动时,.bss 被分配并填充为 0。所有未初始化的对象都位于那里。所以当你初始化变量内存时分配。
引用的其余部分:
"In the executable file, only variables that are initialized to a nonzero value occupy space."
即当可执行文件加载到内存中时,需要的 space 被分配
初始化时,内存分配给“未初始化的静态变量”,并移至.data 部分。
代码文件:
int a,b,c;
int main()
{
a=1;
b=2;
c=3;
scanf("%d",a);
}
执行:
# size a.out
text data bss dec hex filename
1318 284 16 1618 652 a.out
# size core.18521
text data bss dec hex filename
28672 180224 0 208896 33000 core.18521 (core file invoked as ./a.out)