可执行文件的数据是静态变量,因此它们不会发生名称冲突:
foo.c: bar.c:
static int foo = 1; static int foo = 10;
void fooTest() { void barTest() {
static int bar = 2; static int bar = 20;
foo++; foo++;
bar++; bar++;
printf("%d,%d", foo, bar); printf("%d, %d", foo, bar);
} }
如果我编译两个文件并将其链接到一个调用fooTest()和barTest的main,则printf语句将独立增加。因为foo和bar变量是翻译单元的本地变量
发布于 2018-01-16 09:03:51
静力学的去向取决于它们是否初始化。
发布于 2018-01-16 09:56:38
当程序加载到内存中时,它被组织成不同的段。其中一个片段是数据段数据部分进一步细分为两部分:
初始化数据段:所有的全局、静态和常量数据都存储在这里。
未初始化数据段(BSS):所有未初始化的数据都存储在此段中。
下面是一个解释这个概念的图表:
https://stackoverflow.com/questions/-100003400
复制相似问题