OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 谁能详细解释一下堆,栈,静态存储区吗

共7条 1/1 1 跳转至

谁能详细解释一下堆,栈,静态存储区吗

高工
2013-09-22 00:04:11    评分
谁能详细解释一下堆,栈,静态存储区吗...小弟不胜感激!!!



关键词: 详细     解释     静态     存储区    

专家
2013-09-22 09:47:30    评分
2楼

网上找的,说的蛮好的

1.堆:由程序员自己分配释放(用malloc和free,或new和delete) ,如果我们不手动释放,那就要到程序结束才释放。如果对分配的空间在不用的时候不释放而一味的分配,那么可能会引起内存泄漏,其容量取决于虚拟内存,较大。

2.栈:由编译器自动分配释放,其中存放在主调函数中被调函数的下一句代码、函数参数和局部变量,容量有限,较小。

3.静态存储区:由在编译时由编译器分配,由系统释放,其中存放的是全局变量、static变量和常量.

4.区别:

1)堆是由低地址向高地址扩展,栈是由高地址向低地址扩展。

2)堆是不连续的空间,栈是连续的空间。

 3)在申请空间后,栈的分配要比堆的快。对于堆,先遍历存放空闲存储地址的链表、修改链表、再进行分配;对于栈,只要剩下的可用空间足够,就可分配到,如果不够,那么就会报告栈溢出。

4)栈的生命期最短,到函数调用结束时;静态存储区的生命期最长,到程序结束时;堆中的生命期是到被我们手动释放时(如果整个过程中都不手动释放,那就到程序结束时)。


高工
2013-09-22 12:37:30    评分
3楼
谢谢了,嘿嘿~我好好看看

专家
2013-09-22 12:39:21    评分
4楼
客气了,共同学习

专家
2013-09-22 19:46:57    评分
5楼
这几个概念的难点在于,变量在什么时候,什么样的变量 会存在于上述三种区域?

专家
2013-09-22 19:47:01    评分
6楼
这几个概念的难点在于,变量在什么时候,什么样的变量 会存在于上述三种区域?

高工
2013-09-22 20:03:02    评分
7楼
正在琢磨中,呵呵,@jobs 算法学习啥时候开始额....等着呢

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]