程序中堆、栈和静态存储区
来源:互联网 发布:阿里云不是学生 编辑:程序博客网 时间:2024/05/16 19:18
堆:
由程序员自己分配释放(用malloc和free,或new和delete) ,如果我们不手动释放,那就要到程序结束才释放。如果对分配的空间在不用的时候不释放而一味的分配,那么可能会引起内存泄漏,其容量取决于虚拟内存,较大。
栈:
由编译器自动分配释放,其中存放在主调函数中被调函数的下一句代码、函数参数和局部变量,容量有限,较小。
静态存储区:
由在编译时由编译器分配,由系统释放,其中存放的是全局变量、static变量和常量.
区别:
1) 堆是由低地址向高地址扩展,栈是由高地址向低地址扩展。
2) 堆是不连续的空间,栈是连续的空间。
3) 在申请空间后,栈的分配要比堆的快。对于堆,先遍历存放空闲存储地址的链表、修改链表、再进行分配;对于栈,只要剩下的可用空间足够,就可分配到,如果不够,那么就会报告栈溢出。
4) 栈的生命期最短,到函数调用结束时;静态存储区的生命期最长,到程序结束时;堆中的生命期是到被我们手动释放时(如果整个过程中都不手动释放,那就到程序结束时)。
- 程序中堆、栈和静态存储区
- 程序中的栈、堆和静态存储区
- 程序中的栈、堆、静态存储区
- 堆、栈和静态存储区
- 程序在内存中存储情况:栈,堆,代码区,全局(静态)区 ,常量区
- C语言程序内存中:静态存储区、堆、栈的区别
- 堆,栈,静态存储区和常量存储区
- 堆,栈,静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- cocos2d-x学习笔记(三)菜单项
- 第82章、异步处理工具类:AsyncTask(从零开始学Android)
- 简单的sharedPreferences存储
- 转载一些 浮点转定点运算的帖子
- [AndEngine学习教程] 第1节 搭建开发环境
- 程序中堆、栈和静态存储区
- FileInputStream 和FileOutputStream
- Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
- 2013 C++第二周任务-有序结构体
- VS2008配置Directx_10
- 2013-3-8 有序的结构体数组
- jquery中使用event.target的几点说明
- java自定义注解
- 结构体输出今天是今年的第几天?