说说你对堆的理解?如何实现?应用场景?

说说你对堆的理解?如何实现?应用场景?
网上有好多,但是都没有看懂,特别是如何实现这一部分😭

直接介绍 堆 还是需要学习很多前置知识的,建议去哔哩哔哩学习 JVM课程,让你全面的了解内存结构各个方面所负责的功能与作用

img

堆(heap)主要是用来动态分配内存,动态分配的原因在于,程序需要的内存,在编写程序的阶段不能确定用多少
比如说创建一个链表,你运行的时候要添加几个,编代码的时候不能确定,如果不动态分配,分配少了,程序不能创建很大的链表,分配多了,程序用不到白白浪费。
实现方式不需要你管,这个操作系统负责,你只要malloc free即可。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7541264
  • 这篇博客你也可以参考下:数组的排序算法有哪些?如何实现?
  • 除此之外, 这篇博客: 什么是队列?中的 如何理解队列? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    队列这个概念非常好理解,你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队,先进者先出,这就是典型的队列。

    排队买票

    上一篇讲到栈只支持两个基本操作:入栈和出栈。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队,放一个数据到队列尾部;出队,从队列头部取一个元素。

    所以,队列跟栈一样,也是一种操作受限的线性表数据结构,队列的概念很好理解,基本操作也很容易掌握。作为一种非常基础的数据结构,队列的应用也非常广泛,特别是一些具有某些额外特性的队列,比如循环队列、阻塞队列、并发队列。

  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 什么是漂亮的软件设计?小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^