【发布时间】:2011-12-12 03:50:57
【问题描述】:
我想知道全局变量和静态变量在 C/C++ 中的存储位置。至于局部变量在函数处于活动状态时存储在堆栈中,我们也从堆中请求内存,但我不知道静态和全局变量。任何人都可以阐明它。
【问题讨论】:
标签: c++ stack memory-management heap-memory
我想知道全局变量和静态变量在 C/C++ 中的存储位置。至于局部变量在函数处于活动状态时存储在堆栈中,我们也从堆中请求内存,但我不知道静态和全局变量。任何人都可以阐明它。
【问题讨论】:
标签: c++ stack memory-management heap-memory
它们存在于全局内存中,与其他两个区域分开。如果它们的精确内容在编译时已知,它们将作为程序或库的一部分发出并存在于数据段中。
注意:我一直认为它与文本段中的代码一起存在,但短暂的搜索清楚地表明数据段与文本段是分开的,尽管它们通常是连续的。
【讨论】:
加载可执行文件时,操作系统会为程序的全局数据分配内存。通常它们保存在可执行文件的.data 和.bss 部分中。
【讨论】:
它们存储在数据段中,通常(总是?)具有固定大小,并“烧入”到可执行文件中,这与在运行时从操作系统分配的堆不同。数据段通常分为初始化数据段和未初始化数据段(分别为.data和.bss)。
维基百科有更多信息here
【讨论】: