相关信息
堆栈的区别
js栈的生命周期是函数调用期间,而堆的生命周期不由作用域决定, 由gc进行回收
在 Go 等现代语言中,变量到底在堆还是栈,不完全由程序员决定。
如果一个局部变量在函数结束后还要被外部引用(比如返回了它的指针),编译器会将其**“逃逸”到堆上**。
优化建议:频繁在堆上分配小对象会加重 GC 负担。如果能利用栈分配(不逃逸),程序的运行效率会显著提升。
逻辑上是一个完全二叉树,分为大碓顶和小堆顶
物理上是一个数组
js假设某个节点的下标为 $i$(从 0 开始计数):
左子节点下标:$2i + 1$
右子节点下标:$2i + 2$
父节点下标:$(i - 1) / 2$(向下取整)
主要操作删除和插入(上浮和下沉)

本文作者:曹子昂
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!