我想知道全局变量和静态变量存储在C / C ++中的位置。当函数处于活动状态时,局部变量存储在堆栈中我们也从堆请求内存,但我不知道静态和全局变量。任何人都可以点亮它。
答案 0 :(得分:3)
他们生活在全球记忆中,与其他两个区域分开。如果在编译时知道它们的精确内容,它们将作为程序或库的一部分发出并存在于数据段中。
注意:我一直认为它与文本段中的代码一起存在,但是简单的搜索清楚地表明数据段与文本段是分开的,尽管它们通常是连续的。
答案 1 :(得分:2)
加载可执行文件时,操作系统会为程序的全局数据分配内存。通常它们保存在可执行文件的.data
和.bss
部分中。
答案 2 :(得分:0)
它们存储在数据段中,通常(总是?)具有固定大小,并且“烧入”可执行文件,这与在运行时从操作系统分配的堆不同。数据段通常分为初始化和未初始化数据部分(分别为.data和.bss)。
维基百科有更多信息here