首页 > 解决方案 > 为什么链表存储在堆中而不是堆栈中?

问题描述

我一直被教导将链表与堆一起使用,但我不明白为什么你不能只将它与堆栈一起使用?

标签: linked-listheap-memorystack-memory

解决方案


这个命题实际上是错误的;链表不仅存储在堆栈中,而且经常有一个链表作为运行时堆栈的一部分进行维护:这就是我们能够获得调用跟踪的方式。由于通过调用堆栈链接的帧指针链接列表,调用跟踪是可能的。

链表可以由节点组成,每个节点都位于不同执行上下文(如线程)的堆栈中。有一种操作系统技术,通过在该线程的堆栈上声明一个链表节点并将其直接排入等待队列,将任务置于等待队列中。


推荐阅读