memory-management - 在动态存储分配和释放期间使用循环链表作为 "free list"v/s 平衡二叉搜索树

标签 memory-management tree linked-list binary-tree

链表的缺点是对于 malloc() 一个块,内存分配器必须搜索链表,然后如果找到该地址,则返回它..那么为什么不使用二叉树来减少搜索时间呢?

NVIDIA 提出的问题之一
http://www.careercup.com/question?id=9765724

找到一篇相关文章讨论它here

最佳答案

如果我理解正确,请查看此链接:

Time complexity of memory allocation

堆分配可以通过将空闲内存表示为链表来完成,但是任何相当复杂的内存管理器都会使用更快的东西,例如我发布的问题的答案中提到的 AVL 树。甚至还有一个 O(1) 解决方案,称为 TLSF(两级隔离拟合),也在答案中提到。

关于memory-management - 在动态存储分配和释放期间使用循环链表作为 "free list"v/s 平衡二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611867/

相关文章:

c - 我应该 malloc 结构的大小是多少?

javascript - 如何使用 HTML、CSS 和/或 Javascript 显示证明树?

c - 如何将二维数组复制到临时二维数组中并返回它?

c++ - 跟踪 C++ 中的内存使用情况并评估内存消耗

python - 在 python 中生成列表的条件乘积(组合)

c# - 关于 TreeView 中 BFS 或 DFS 递归的混淆

c - c : Function which deletes every second element of linked list 中的指针

c - 如何在循环中创建节点并将它们插入链表

php - 如何在php中制作一个循环链表?

c - 最佳缓冲区大小