2017.3.23

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.3.23相关的知识,希望对你有一定的参考价值。

堆和栈的区别

一、申请方式

栈:由系统自动分配

堆:需要程序员自己申请,并指明大小

二、申请后系统的响应

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出

堆:操作系统有一个记录空间内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆节点,然后将该节点从空闲节点链表中删除,并将该节点的空间分配给程序

三、申请大小的限制

栈:在windows 下,栈是向低地址扩展的数据结构,是一块连续的内存区域。也就是栈顶的地址和栈的最大容量是系统预先规定好了的,在windows 下,栈的大小是2MB.

堆:堆是向高地址扩展的数据结构,是不连续的内存区域。

四、申请效率

栈:由系统自动分配,速度较快,但程序员无法控制

堆:是由new 分配的内存,一般速度比较慢,而且容易产生内存碎片

五、堆和栈中存储的内容

栈:在函数调用时,第一个进栈的是主函数的下一个指令的地址,然后是函数的各个参数,参数是从右往左入栈的,然后是函数中的局部变量。

堆:一般在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排。

以上是关于2017.3.23的主要内容,如果未能解决你的问题,请参考以下文章

2017.3.23下午学习报告

2017-3-23表单

2017.3.23

2017.3.23-morning

2017-3-23 网页中的表单 框架 标题栏小图标 描点 插入视频音频 简单的滚动条

第二周毕业设计任务