文档章节

堆和栈的区别

种地瓜
 种地瓜
发布于 2016/10/03 20:04
字数 428
阅读 12
收藏 0

堆和栈的区别主要有一下几点:

   1.管理方式不同:

                    栈是由编译器自动管理,不需要手动管理,

                    堆是由程序员管理,容易产生内存泄露

   2.空间大小不同:

                    一般32为系统,堆的大小可以达到4GB, 

                    对于栈来讲,栈由空小大小限制,在vc下,默认栈大小是1MB,但是可以修改的

   3.产生碎片方式不同:

                    对于堆来说,频繁new/delete造成内存空间不连续,会产生大量的碎片,使得程序效率降低

                    但是栈不会存在这个问题

   4.生长方向不同:

                    对于堆来说,生长方式是向上的,朝着地址内存增长的方向    

                    栈,生长方式是向下的,朝着内存地址减小的方向生长

   5.分配方式不同:

                    堆是动态分配的,没有静态分配的堆,

                    栈有两种分配方式,静态分配和动态分配,静态分配是由编译器完成的,比如局部变量的分配,动态分配是由allocl等函数分配的,但是栈的动态和堆的动态分配不同,它是由编译器进行释放,无需人工释放。

   6.分配效率不同:

                    栈是机器系统提供的数据结构,计算机在底层堆栈提供支持,分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高,堆则是C/C++函数库提供的,它的机制是很复杂的, 显然栈的效率高一些。

© 著作权归作者所有

共有 人打赏支持
种地瓜
粉丝 9
博文 174
码字总数 44807
作品 0
深圳
程序员

暂无文章

7月13日任务 for、while、break跳出、ontinue结束、exit退出

20.10 for循环 语法:for 变量名 in 条件; do …; done 案例1:计算1到100的和 #!/bin/bashsum=0for i in `seq 1 100`do    sum=$[$sum+$i]    echo $idoneecho $sum 案例2...

吕湘颖
39分钟前
0
0
qemu增量镜像的好处

可以快速恢复,相当于快照的功能。

simpower
46分钟前
0
0
Python3_Appium_QQ 实战

Python3_Appium实战 -海盐 APPium移动自动化测试 样例中 测试的 app 使用的是 QQ; Appium介绍 Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合...

海盐宝宝
46分钟前
0
0
内网穿透利器-ngrok的图文安装

使用场景: 在做微信开发或是调银行或支付宝等支付系统的时候,本地想联调但是对方需要可以访问的域名或是外网IP才可以。但是,在本地如果不在路由器上做映射或是公司没有固定的外网IP。这种...

中凯_凯哥java
51分钟前
4
1
归约与分组 - 读《Java 8实战》

区分Collection,Collector和collect 代码中用到的类与方法用红框标出,可从git库中查看 收集器用作高级归约 // 按货币对交易进行分组Map<Currency, List<Transaction>> currencyListMap = g...

yysue
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部