静态变量在内存哪分配的?

如题所述

内存不止分为堆和栈,还有另外3个区:
|-----------|
|     栈     |
|-----------|
|      |      |
|     \|/     |
|             |
|     /|\     |
|      |      |
|-----------|
|     堆     |
|-----------|
| 未初始化|
|------------|
|    初始化 |
|------------|
|   正文段 |
|------------|
其中栈是由编译器自动分配释放,堆区是程序员申请释放;
全局变量和静态变量是存储的一起的,全局未初始化变量和静态未初始化变量放在未初始化区(又称BSS区),全局初始化变量和静态初始化变量放在初始化区;
代码的二进制存放在正文段。。
温馨提示:内容为网友见解,仅供参考
无其他回答

静态变量是什么
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态...

静态变量存储在哪个区
全局变量和静态变量分配在静态数据区(全局区),本地变量分配在动态数据区,即堆栈中。程序通过堆栈的基地址和偏移量来访问本地变量。

静态变量在内存中存放的位置是
静态变量在内存中存放的位置是栈区。C语言中定义的静态变量存放在栈区,动态分配的内存空间位于堆区。静态变量在内存空间中只有一份,被类的多个对象共享。局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配,但是...

静态变量与非静态变量的区别
1、存储位置不同 静态变量:存储在全局数据区(静态数据区)。非静态变量叫动态变量:存储在内存出栈数据区。2、生命期不同 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效。静态变量:程序结束时才释放。3、作用域不同 动态变量:同样的要根据你定义的位置才...

static变量存储在哪里
静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的 代码区,全局数据区,堆区,栈区 一般程序的由new产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在...

静态变量和实例变量的区别?
就是new 该类后,才可以调用。但是该类未被再次使用,被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。区别如下:1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;2.静态变量与类相关,普通变量则与实例相关 3.内存分配方式不同。4.生命周期不同。

php中的静态变量和动态变量的区别
静态变量:当前文件中有效 堆和栈的区分:堆(Heap)栈(Stack)1、内存分配方面:堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。栈:由编译器(Compiler)自动分配...

内存分配方式有哪些
[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的...

静态变量和动态变量,成员变量
静态变量的值可以改变,但不是常量。构造函数用于创建对象时为成员属性赋值,析构函数则在对象销毁前执行清理工作。动态变量,如自动变量(auto),是动态局部变量,属于动态存储类别,在函数调用时分配内存,函数结束后释放。静态变量在整个程序执行过程中存在,但作用域外无法访问。全局变量,定义在所有函数...

static int x在哪个区域
在静态储存区。静态存储区,全局变量和静态变量被分配到同一块内存中,常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,是不允许修改的。

相似回答