国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python堆和栈的区别有哪些

python堆和栈的区别有哪些

Python 区别

头像

爱喝马黛茶的安东尼

2019-09-21 17:51:327768浏览 · 0收藏 · 0评论

堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:
(1)程序内存布局场景下,堆与栈表示的是两种内存管理方式;
(2)数据结构场景下,堆与栈表示两种常用的数据结构。

相关推荐:《Python教程

堆与栈实际上是操作系统对进程占用的内存空间的两种管理方式,主要有如下几种区别:

(1)管理方式不同。栈由操作系统自动分配释放,无需我们手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏;

(2)空间大小不同。每个进程拥有的栈的大小要远远小于堆的大小。理论上,程序员可申请的堆大小为虚拟内存的大小,进程栈的大小 64bits 的 Windows 默认 1MB,64bits 的 Linux 默认 10MB;

(3)生长方向不同。堆的生长方向向上,内存地址由低到高;栈的生长方向向下,内存地址由高到低。

(4)分配方式不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是由操作系统完成的,比如局部变量的分配。动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由操作系统进行释放,无需我们手工实现。

(5)分配效率不同。栈由操作系统自动分配,会在硬件层级对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是由C/C++提供的库函数或运算符来完成申请与管理,实现机制较为复杂,频繁的内存申请容易产生内存碎片。显然,堆的效率比栈要低得多。

(6)存放内容不同。栈存放的内容,函数返回地址、相关参数、局部变量和寄存器内容等。当主函数调用另外一个函数的时候,要对当前函数执行断点进行保存,需要使用栈来实现,首先入栈的是主函数下一条语句的地址,即扩展指针寄存器的内容(EIP),然后是当前栈帧的底部地址,即扩展基址指针寄存器内容(EBP),再然后是被调函数的实参等,一般情况下是按照从右向左的顺序入栈,之后是被调函数的局部变量,注意静态变量是存放在数据段或者BSS段,是不入栈的。出栈的顺序正好相反,最终栈顶指向主函数下一条语句的地址,主程序又从该地址开始执行。堆,一般情况堆顶使用一个字节的空间来存放堆的大小,而堆中具体存放内容是由程序员来填充的。

从以上可以看到,堆和栈相比,由于大量malloc()/free()或new/delete的使用,容易造成大量的内存碎片,并且可能引发用户态和核心态的切换,效率较低。栈相比于堆,在程序中应用较为广泛,最常见的是函数的调用过程由栈来实现,函数返回地址、EBP、实参和局部变量都采用栈的方式存放。虽然栈有众多的好处,但是由于和堆相比不是那么灵活,有时候分配大量的内存空间,主要还是用堆。

无论是堆还是栈,在内存使用时都要防止非法越界,越界导致的非法内存访问可能会摧毁程序的堆、栈数据,轻则导致程序运行处于不确定状态,获取不到预期结果,重则导致程序异常崩溃,这些都是我们编程时与内存打交道时应该注意的问题。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

炮姐BGM高清| 家庭教师3| 爸爸吃女儿奶奶高情商回复| 美国伦理巜干柴烈火2| 日本大片又大又好看的PPT | 老婆同意了别人轮流联系我| 他扒开我小沉添我三男一女视频| 被扣到眼神失焦| JK| 粗大的蘑菇头刮得又红又肿怎么办| 妻子的姐姐免费观看大全电视剧| 韩漫免费观看在线阅读浸画| 妈妈让我戴上避孕套的下一句是啥| 免费观看已满十八岁电视剧高清版| 扌雷辶鬲的小说父女| 美女和帅哥一起努力生产豆浆| 厨房激战饥荒老奶奶能睡觉吗| 公天天吃我奶躁我高H漫画| 爱的健身房| 舌头底下舔着有小硬疙瘩视频| 《春闺梦里人》在线观看免费| AAAAABBBBBB级是什么.| 拔萝卜高清免费大全电视剧| 雷神笔记本| 福艳都市韵母王雪琴| 特种兵营里被轮流的小说叫什么| 几天不C你骚水又多了第一集| 暴躁少女CSGO高清观看方法 | 把腿开大点我添添你SB| 小小小蜜桃免费观看电视剧高清| 家公给我治疗5中字| 野外打野真实视频大全| 《插曲的痛免费观看第二季》| EXO妈妈MV高清在线观看| 45岁老阿姨喷了三次尿素乳育| 鲁鲁影院免费观看电视剧电影| 妈妈がだけの母さん歌词| 26个阴性外貌长相图片| 一枪战三母2-1免费观看央视网| 《部长你别这样》大结局 | 一边吃奶一边添P好爽视频