内存的存储类型(C/C++)
来源:互联网 发布:淘宝手机店铺装修 编辑:程序博客网 时间:2024/05/10 07:37
1 栈
通常是用于那些在变异期间就能确定存储大小的变量的存储区,用于在函数作用域内创建,在离开作用域后自动销毁的变量的存储区。通常是局部变量,函数参数等的存储区。他的存储空间是连续的,两个紧密挨着定义的局部变量,他们的存储空间也是紧挨着的。栈的大小是有限的,通常Visual C++编译器的默认栈的大小为1MB,所以不要定义int a[1000000]这样的超大数组。
2 堆
通常是用于那些在编译期间不能确定存储大小的变量的存储区,它的存储空间是不连续的,一般由malloc(或new)函数来分配内存块,并且需要用free(delete)函数释放内存。如果程序员没有释放掉,那么就会出现常说的内存泄漏问题。需要注意的是,两个紧挨着定义的指针变量,所指向的malloc出来的两块内存并不一定的是紧挨着的,所以会产生内存碎片。另外需要注意的一点是,堆的大小几乎不受限制,理论上每个程序最大可达4GB。
3 全局/静态存储区
和“栈”一样,通常是用于那些在编译期间就能确定存储大小的变量的存储区,但它用于的是在整个程序运行期间都可见的全局变量和静态变量。
4 常量存储区
和“全局/静态存储区”一样,通常是用于那些在编译期间就能确定存储大小的常量的存储区,并且在程序运行期间,存储区内的常量是全局可见的。这是一块比较特殊的存储去,他们里面存放的是常量,不允许被修改。
5 总结
根据上面的内容,分别将栈和堆、全局/静态存储区和常量存储区进行对比,结果如下。
表1 栈和堆的对比
栈
堆
存储内容局部变量
变量
作用域函数作用域、语句块作用域
函数作用域、语句块作用域
编译期间大小是否确定是
否
大小1MB
4GB
内存分配方式地址由高向低减少
地址由低向高增加
内容是否可以修改是
是
全局/静态存储区
常量存储区
存储内容
全局变量、静态变量
常量
编译期间大小是否确定
是
是
内容是否可以修改
是
否
- 内存的存储类型(C/C++)
- 从内存理解c语言中变量的存储类型
- 从内存理解c语言中变量的存储类型
- 从内存理解c语言中变量的存储类型
- 从内存理解c语言中变量的存储类型
- 从内存理解c语言中变量的存储类型
- linux C编程(二)数据与函数的存储类型和内存管理
- C++的基础知识(十二)--C/C++内存区划分和存储类型
- c中数据的存储(内存)
- C 变量的存储类型
- C语言的存储类型
- C语言的存储类型
- c高级c存储类型
- C语言存储类型
- C 变量存储类型
- C语言存储类型
- C++:存储类型
- C语言存储类型
- perldoc
- WordPress 3.0
- WordPress3.0导航菜单图文使用教程
- Perl中注释
- 视频九学习心得---算术运算和关系运算
- 内存的存储类型(C/C++)
- 如何开网店,itdaxue手把手教你开店方法。
- dos窗口下能编译java程序,但不能执行情况分析
- 分业
- 中国企业“战略迷失悲剧”逼近高发期--中国房地产企业即将迎来倒闭潮
- unix环境高级编程-chdir、fchdir和getcwd函数。
- 某人说缘分
- 关于使用servlet后的404问题
- 142312