首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >(在C/C++中)静态变量存储在哪里?

(在C/C++中)静态变量存储在哪里?
EN

Stack Overflow用户
提问于 2018-01-16 00:45:07
回答 2查看 0关注 0票数 0

可执行文件的数据是静态变量,因此它们不会发生名称冲突:

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变量是翻译单元的本地变量

EN

回答 2

Stack Overflow用户

发布于 2018-01-16 09:03:51

静力学的去向取决于它们是否初始化。

票数 0
EN

Stack Overflow用户

发布于 2018-01-16 09:56:38

当程序加载到内存中时,它被组织成不同的段。其中一个片段是数据段数据部分进一步细分为两部分:

初始化数据段:所有的全局、静态和常量数据都存储在这里。

未初始化数据段(BSS):所有未初始化的数据都存储在此段中。

下面是一个解释这个概念的图表:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档