C++里面static申明的变量是存在哪个区(堆区、栈区、代码区,,其他2个忘了)

C++里面static申明的变量是存在哪个区(堆区、栈区、代码区,,其他2个忘了),还有能否顺便说明下各种变量包括常量等分别存放在哪里,大神来啊

第1个回答  2014-09-27
全局变量、常量,都是在数据区的
函数局部变量在栈上
动态分配的在堆上追问

可是五大分区是不是还有一个叫做 全局数据区啊,那static是不是应该存在这里?

追答

我说的数据区就是你说的全局数据区,准确的说,其实程序不是这么分区的。。。

运行时,程序文件本身会被整个载入一个内存区域,里面分代码段、数据段(全局变量和常量存在于此,其实数据段不只一个,有只读的也有可读写的)。

栈空间,是在创建一个线程时操作系统分配的,windows默认是1MB。所谓的局部变量,就是在其线程的栈里面保存的,通过移动栈指针来腾出空间。具体的三言两语说不清楚。

堆空间,就很好理解了。

static的,都是全局变量,所以,答案很明显。

本回答被提问者采纳
第2个回答  2022-01-10
static修饰的所有变量(全局变量,局部变量)都在数据区。初始化的变量在数据区的date区,未初始化的变量在数据区的bss区。
static修饰的函数,和常规一样,放在代码区(text)
相似回答