C语言——内存管理
2016-03-09 08:37
357 查看
C语言——内存管理
宗旨:技术的学习是有限的,分享的精神是无限的。
//变量的存储布局(伴随初级程序员和高级工程师一生的)
静态区:全局变量和static变量,初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和和未初始化的静态变量在相邻的的另一块区域。生命周期为整个程序,由编译器编译的时候分配;
栈:局部变量,函数参数;栈上的内容只在函数的范围内存在,当函数运行结束,内容自动销毁;特点是效率高,但空间大小有限;
堆:由malloc系列函数或new操作符分配的内存。生命周期由free或delete决定。没释放之前一直存在,直到程序结束;特点是使用灵活,空间比较大,但容易出错。
文字常量:常量字符串就是存放在这里的,程序结束后由系统释放。
程序代码:存放函数体的二进制代码。
重要:变量必定存储在上面的某一种中,必须理解。再次强调,尽量别用全局变量,实在不行加static限制,最佳办法是写成函数接口。
宗旨:技术的学习是有限的,分享的精神是无限的。
//变量的存储布局(伴随初级程序员和高级工程师一生的)
静态区:全局变量和static变量,初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和和未初始化的静态变量在相邻的的另一块区域。生命周期为整个程序,由编译器编译的时候分配;
栈:局部变量,函数参数;栈上的内容只在函数的范围内存在,当函数运行结束,内容自动销毁;特点是效率高,但空间大小有限;
堆:由malloc系列函数或new操作符分配的内存。生命周期由free或delete决定。没释放之前一直存在,直到程序结束;特点是使用灵活,空间比较大,但容易出错。
文字常量:常量字符串就是存放在这里的,程序结束后由系统释放。
程序代码:存放函数体的二进制代码。
重要:变量必定存储在上面的某一种中,必须理解。再次强调,尽量别用全局变量,实在不行加static限制,最佳办法是写成函数接口。
相关文章推荐
- Lua的内存管理浅析
- 跟我学习JScript的Bug与内存管理
- 跟我学习javascript的垃圾回收机制与内存管理
- 深入探讨PHP中的内存管理问题
- linux 内存管理机制详细解析
- 解析PHP中的内存管理,PHP动态分配和释放内存
- javascript内存管理详细解析
- JavaScript内存管理介绍
- Cocos2d-x的内存管理总结
- 模拟实现C语言中的内存管理
- javascript错误的认识不用关心内存管理
- IOS中内存管理那些事
- Python深入学习之内存管理
- 简单说说STL的内存管理
- InnoDB存储引擎的内存管理机制
- jemalloc优化MySQL、Nginx内存管理
- 【转】JVM内存管理:深入垃圾收集器与内存分配策略
- JavaScript内存管理介绍
- C/C++内存管理详解
- Oracle 自动管理 ASMM