文档章节

堆和栈的区别

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

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

   1.管理方式不同:

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

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

   2.空间大小不同:

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

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

   3.产生碎片方式不同:

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

                    但是栈不会存在这个问题

   4.生长方向不同:

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

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

   5.分配方式不同:

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

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

   6.分配效率不同:

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

© 著作权归作者所有

共有 人打赏支持
种地瓜
粉丝 9
博文 177
码字总数 45450
作品 0
深圳
程序员
私信 提问

暂无文章

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部