Memory MIPS32-释放内存

Memory MIPS32-释放内存,memory,memory-management,mips,Memory,Memory Management,Mips,假设我在MIPS32中有一个链表,并且在某个时候我想删除其中一个节点。 我要做的是使前置节点指向移除节点的下一个节点。 但是,删除的节点仍包含一些数据。所以问题是,我如何确定该节点将来是否可用 一个建议是创建第二个链表,其中包含所有可用的节点。然而,我将如何实施这样一份清单?另外,您认为这个列表应该指向内存中的所有可用空间,还是只指向其中一个已删除的节点 有没有其他更好的方法来达到同样的效果 解决方案: 每当我们“请求”新内存时,我们都使用使用syscall的sbrk服务。但是,如果我们已经从数

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

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

有没有其他更好的方法来达到同样的效果

解决方案

每当我们“请求”新内存时,我们都使用使用syscall的sbrk服务。但是,如果我们已经从数据结构中删除了某些内容,我们可能会希望使用已删除的部分内存

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

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

每当我们“请求”新内存时,我们都使用使用syscall的sbrk服务。但是,如果我们已经从数据结构中删除了某些内容,我们可能会希望使用已删除的部分内存

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


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

为什么要删除可用节点?我没有说要删除它们。我希望移除的节点可以再次使用。哦,我一定是误读了。您只需要一个可重用节点池。这更像是一个数据结构问题,而不是其他任何问题。即使使用简单的数组,也可以通过多种方式实现。这真的取决于你想要它有什么样的属性。我明白你的意思。那么我应该说:1-如果有可重用的节点,就使用这些节点,否则就使用syscall调用sbrk?您应该将解决方案作为答案并接受它,而不是作为问题的一部分。