繁体   English   中英

MIPS32-释放内存

[英]MIPS32 - Deallocate memory

假设我在MIPS32中有一个链表,并且在某个时候我想删除其中一个节点。 我要做的是使前一个节点指向已删除节点的下一个节点。 但是,删除的节点仍然包含一些数据。 因此,问题是如何确定该节点将来是否可用?

一种建议是创建第二个链接列表,其中包含所有可用的节点。 但是,我将如何实施这样的清单? 另外,您认为此列表应指向内存中的所有可用空间,还是仅指向已删除节点之一?

还有其他更好的方法来实现相同的结果吗?

解决方案

每当我们“询问”新内存时,我们都会通过syscall使用sbrk服务。 但是,如果我们从数据结构中删除了某些内容,则可能要使用该删除的内存部分。

因此,解决方案可能是拥有可重复使用的节点的链表。 每当我们从数据结构中删除某些内容时,我们都会将一部分内存(即节点)添加到链接列表中,以跟踪可重复使用的内存。

因此,当我们必须向数据结构中添加某些内容时,我们首先要检查“内存链接列表”中是否有一些可重用的节点。 如果不是这种情况,我们可以照常使用sbrk。

每当我们“询问”新内存时,我们都会通过syscall使用sbrk服务。 但是,如果我们从数据结构中删除了某些内容,则可能要使用该删除的内存部分。

因此,解决方案可能是拥有可重复使用的节点的链表。 每当我们从数据结构中删除某些内容时,我们都会将一部分内存(即节点)添加到链接列表中,以跟踪可重复使用的内存。

因此,当我们必须向数据结构中添加某些内容时,我们首先要检查“内存链接列表”中是否有一些可重用的节点。 如果不是这种情况,我们可以照常使用sbrk。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM