文档章节

堆和栈的区别

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

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

   1.管理方式不同:

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

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

   2.空间大小不同:

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

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

   3.产生碎片方式不同:

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

                    但是栈不会存在这个问题

   4.生长方向不同:

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

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

   5.分配方式不同:

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

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

   6.分配效率不同:

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

© 著作权归作者所有

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

暂无相关文章

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 43分钟前 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部