堆与栈 区别

1 ALU理解:

  1. 在CPU中存在核心模块ALU,主要是进行 数据计算 、逻辑计算
  2. 对于ALU来说进行简单运算是可以快速得出结果,而复杂的运算需要先记录再运算【寄存器,存储临时结果;过程ALU执行计算,将结果存放在寄存器各个块中,临时存储;利用寄存器可以实现计算机数据分布存储的过程】
  3. 实际过程上在程序中存在大量的,复杂运算或者处理的时候只利用寄存器是不够的,因此这个需要就使用了内存

2 内存的 堆与栈

内存:

  1. 栈,堆栈

2.1 栈的理解
对于栈,特点是先进后出;先进的在底部,后放的在顶部;如桶里放的东西,先放进去的内容最后才能拿出来
在这里插入图片描述在这里插入图片描述
在程序中函数的调用是基本嵌套方式调用,因此函数的存储比较适合栈来存储先进后出;

2.2 堆的理解
关于堆、其本身一般是由开发人员进行分配释放,如果程序员不释放,程序结束的时候可能需要通过os回收,(不过这里不同编程语言的设置上会存在不同的情况,有的语言会自动回收,有的语言不会如果不断创建可能会导致内存泄漏)

在这里插入图片描述

3 堆与栈的 区别

  1. 内存分配:
    栈:内存分配主要由编译器负责分配和释放,栈上存储的是局部变量、函数返回地址等;
    堆:堆的内存操作一般主要是程序员(编程语言)实现、系统提供堆内存接口,编程语言提供相应的方法(需要主要垃圾回收不然会存在内存泄漏)

    区别点:
    栈的内存管理简单,分配堆块
    栈点内存不需要回收,堆需要回收;无论主动回收还是被动的垃圾回收,都需要额外的CPU
    栈的内存有更好的局部性,堆上的内存访问不一定很好,两块数据可能在不同页上,会比消耗时间
    
  2. 效率区别:栈的效率大于堆的效率(栈是进程初始化就分配好、堆是动态分配)

  3. 空间管理
    栈:由编译器自动管理,弹栈和压栈,不会产生内存碎片
    堆:手动申请和释放,会产生大量的内存碎片

  4. 大小:
    栈内存:大小限制一般为1-2 MB
    堆内存:不同程序没有限制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值