变量,常量,静态变量存储的位置
来源:互联网 发布:中国气象数据网 编辑:程序博客网 时间:2024/05/17 03:31
常见的存储区域可分为:
1、栈
由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
2、堆
由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,程序会一直占用内存,导致内存泄漏,在程序结束后,操作系统会自动回收。
3、自由存储区
由malloc等分配的内存块,它和堆是十分相似的,不过它是用free来释放分配的内存。
4、全局/静态存储区
全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
5、常量存储区
这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改)。
例1:C语言程序
变量x存储在内存哪个区域?
答:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。
BSS是英文Block Started by Symbol的简称。BSS段属于静态存储区。
例2:static全局变量与普通全局变量有什么区别?
答:static全局变量和普通全局变量存储区域相同,不同的是:
static全局变量只在声明此static全局变量的文件中有效;
普通全局变量对整个源程序都有效,当此源程序包含多于一个文件的程序时,对其他文件依然有效。
例3:static局部变量与普通局部变量的区别?
答:static局部变量的存储区为静态存储区,普通局部变量的存储区为栈;
static局部变量生存周期为整个源程序,但是只能在声明其的函数中调用,并且其值与上一次的结果有关;而普通局部变量的生存周期为声明其函数的周期,超过特定的范围其值会被重新初始化;
static局部变量如果未初始化其值默认为0,而普通局部变量则不确定。
转载自http://blog.csdn.net/xl890727/article/details/12657073
- 变量,常量,静态变量存储的位置
- 变量、常量、静态变量的存储位置
- 变量,常量,静态变量存储的位置
- 变量,常量,静态变量存储的位置
- 变量,常量,静态变量存储的位置
- 变量 常量等存储位置
- 局部变量、全局变量、静态变量的含义及存储位置
- 全局变量、常量、程序代码、静态变量的位置关系
- 静态存储的变量初始化必须是常量表达式
- 变量,常量,静态变量的使用实例
- 变量,常量,静态变量,静态常量
- java变量的存储位置
- 浅谈变量的存储位置
- c++ 变量的存储位置
- 各种变量的存储位置
- java变量存储的位置
- equals()变量,常量的位置
- 动态变量vs常量 动态存储vs静态存储
- 能否将一个网址(如QQ空间网址),打包成APK,然后别人下载APK安装到手机后,点击进入这个网址?
- Spark1.6.3 Driver端 task调度源码分析
- 洛谷P3378 手写堆模板
- asp utf-8编码 乱码问题
- 内存
- 变量,常量,静态变量存储的位置
- asp.net 用sqldatareader读取数据
- fragment和Thread的空指针问题
- 汇编语言Assembly(二)
- ZCMU-1375-阶乘的0
- Flash代码在ie正常显示,在Google浏览器错位,火狐浏览不能显示此页面上的内容需要较新版本的 Adobe Flash Player。
- iOS 结构体
- Android与PC通信,客户端运行失败
- 请教:Android下怎样让Activity的一部分用于画图而不占用整个Activity 另一部分显示其他控件