堆栈
2014-02-25 15:58
183 查看
一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,
未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区— 存放函数体的二进制代码。
这是一个前辈写的,非常详细
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,
未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区— 存放函数体的二进制代码。
例子程序
这是一个前辈写的,非常详细相关文章推荐
- OpenGL: Ubuntu图元
- 【转】Windows平台SSH登录Linux并使用图形化界面
- linux笔记2.25
- 8.2.2: Spring的零配置支持---指定Bean的作用域
- Html Agility Pack基础类介绍及运用
- 观察者模式2
- mac os 和 ubuntu 上测试工具check-0.9.10的安装
- jQuery中$.get、$.post、$.getJSON、$.ajax 方法详解
- 28个不得不看的经典编程算法
- Struts2小结
- HTML-使用frameset布局在frame与frame之间有1像素的空隙
- 深入浅出TCP之send和recv
- 微信公众平台接口,asp.net实现
- mac os 和 ubuntu 上测试工具check-0.9.10的安装
- 8.2.1: Spring的零配置支持---搜索Bean类
- 今天手机绑定了CSDN账号
- Firefly安装说明
- 【搜索入门】搜索字符串
- INS-08109 'nodeselectionpage'
- 安卓测试学习笔记