程序在内存中的分配
2014-03-08 16:03
239 查看
程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分:
1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(.data),未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(.bss)。 - 程序结束后由系统释放。
4、文字常量区 —常量字符串就是放在这里的(.rodata)。 程序结束后由系统释放。
5、程序代码区—存放函数体的二进制代码(.text)。
一个由c/C++编译的程序占用的内存分为以下几个部分:
1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(.data),未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(.bss)。 - 程序结束后由系统释放。
4、文字常量区 —常量字符串就是放在这里的(.rodata)。 程序结束后由系统释放。
5、程序代码区—存放函数体的二进制代码(.text)。
相关文章推荐
- 内部排序之四:归并排序和快速排序(含完整源码)
- 深入解析Oracle.DBA入门进阶与诊断案例
- Oracle.11g权威指南 第2版)].谷长勇
- oracle实例恢复 详解理论知识
- struts.xml配置json
- Ural 1091 Tmutarakan Exams 解题报告(容斥原理)
- printf格式控制符
- Oracle10g服务器管理恢复
- 0.ring0-PAE-(虚拟地址转换成物理地址详细示例)
- 谁是最好的Coder
- 驱动学习---PAE--virtual address to physics address
- BZOJ1876: [SDOI2009]SuperGCD
- 美河提供.Oracle.11i.实用全书[
- Centos linux安装MySQL-5.6.4
- 文件系统,磁盘性能测试
- java的文件读写
- Media Foundation学习笔记(八)编程练习:一个通用视频文件播放器
- 【JAVA】设计模式之适配器模式(Adapter模式)的使用分析
- C++ Virtual详解
- java_7_new_features_cookbook