首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了堆栈和堆之外,还有内存使用模式吗?

除了堆栈和堆之外,还有内存使用模式吗?
EN

Stack Overflow用户
提问于 2010-02-23 02:25:32
回答 8查看 614关注 0票数 5

由于我已经学习了数据结构,我知道除了堆栈和堆之外,还有很多其他的数据结构,为什么现在的进程在它们的地址空间中只包含这2种模式作为“标准设备”?是否会有新的内存使用模式?

谢谢你的回复。是的,我意识到我的陈述有问题。堆数据结构与进程地址空间中的堆不相同。但是,我想知道的是,除了堆栈区和堆叠区之外,在proecss地址空间中,是否有任何新的使用内存的范例?似乎其他的内存使用方式是建立在这两种基本范式之上的。这两种范式是某种元范式吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-02-23 03:07:15

让我们想一想。我们有两个基本的存储规则。连续的和支离破碎的。

毗连。

  • Stack受顺序的限制。最后先出来。函数调用的嵌套上下文要求这样做。

  • 我们可以很容易地反转这个模式来定义队列。先到先出。

  • 我们可以向队列中添加绑定以生成循环队列。输入输出处理要求这样做。

我们可以将两个约束组合成一个Dequeue.

  • 我们可以向队列中添加密钥和排序,以创建优先级队列。OS Scheduler要求这样做。

所以。这是一系列受入口顺序限制的相邻结构的变化。其中有多个实现.

  • ,您可以使用不受条目顺序约束的连续存储:、Array、Hash。数组由“位置”索引,散列由键的哈希函数索引。

支离破碎:

  • 裸的“堆”是支离破碎的存储,没有关系。这是通常的方法。

  • 您可以使用句柄进行堆存储以允许重新定位。旧的Mac操作系统曾经这样做过。

您可以使用关系-列表和树之类的分段存储。

  • Linked列出了。单链接和双链接列表是实现的选择。

  • Binary Trees有0,1或2个子树。

  • Higher-order树尝试和类似的.

我们在做什么?一打?

您也可以将其视为“集合”,而不考虑存储。在本例中,您混合了存储规则(heapish或array-ish)。

书包:允许带复制件的无序收藏。您可以在多个存储规则上构建一个包: LinkedBag、TreeBag、ArrayBag、HashBag。链接和树使用分段存储,数组和哈希使用连续存储。

集合:没有重复的无序集合。没有索引。再次: LinkedSet,TreeSet,ArraySet,HashSet。

列表:已订购的收藏。按位置编制索引。再次: LinkedList,TreeList,ArrayList,HashList。

映射:键值关联集合。按键编制索引。LinkedMap,TreeMap,ArrayMap,HashMap。

票数 4
EN

Stack Overflow用户

发布于 2010-02-23 02:35:32

请注意,“堆”(可以按随机顺序分配和释放内存的内存区域)与称为“堆”(优先级列表)的数据结构无关。

顺便说一句,是的,除了堆栈和堆之外,还有第三种内存使用模式:静态存储;-)

票数 3
EN

Stack Overflow用户

发布于 2010-02-23 02:28:42

想到了FIFO。处理器之间共享内存。消息传递会成为一种记忆模式吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2315760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档