【问题标题】:where in memory static variables are stored? [duplicate]内存静态变量存储在哪里? [复制]
【发布时间】:2011-12-12 03:50:57
【问题描述】:

可能重复:
Where are static variables stored (in C/C++)?

我想知道全局变量和静态变量在 C/C++ 中的存储位置。至于局部变量在函数处于活动状态时存储在堆栈中,我们也从堆中请求内存,但我不知道静态和全局变量。任何人都可以阐明它。

【问题讨论】:

    标签: c++ stack memory-management heap-memory


    【解决方案1】:

    它们存在于全局内存中,与其他两个区域分开。如果它们的精确内容在编译时已知,它们将作为程序或库的一部分发出并存在于数据段中。

    注意:我一直认为它与文本段中的代码一起存在,但短暂的搜索清楚地表明数据段与文本段是分开的,尽管它们通常是连续的。

    【讨论】:

      【解决方案2】:

      加载可执行文件时,操作系统会为程序的全局数据分配内存。通常它们保存在可执行文件的.data.bss 部分中。

      【讨论】:

        【解决方案3】:

        它们存储在数据段中,通常(总是?)具有固定大小,并“烧入”到可执行文件中,这与在运行时从操作系统分配的堆不同。数据段通常分为初始化数据段和未初始化数据段(分别为.data和.bss)。

        维基百科有更多信息here

        【讨论】:

          猜你喜欢
          • 2015-11-03
          • 2018-08-14
          • 1970-01-01
          • 1970-01-01
          • 2021-03-18
          • 1970-01-01
          • 2012-01-13
          • 2010-09-10
          相关资源
          最近更新 更多