MIPS32 - освободить память - PullRequest
0 голосов
/ 01 марта 2012

Предположим, у меня есть связанный список в MIPS32, и в какой-то момент я хочу удалить один из узлов.То, что я делаю, чтобы узел-предшественник указывал на следующий удаленный узел.Однако удаленный узел все еще содержит некоторые данные.Таким образом, вопрос заключается в том, как мне узнать, будет ли этот узел использоваться в будущем или нет?

Одним из предложений было создание второго связанного списка, содержащего все узлы, которые можно использовать.Тем не менее, как бы я пошел, чтобы реализовать такой список?Кроме того, как вы думаете, должен ли этот список указывать на все используемое пространство в памяти или только на один из удаленных узлов?

Есть ли другой лучший способ добиться того же результата?

Решение :

Всякий раз, когда мы «просим» новую память, мы используем сервис sbrk, используя syscall.Однако, если мы удалили что-то из нашей структуры данных, мы можем захотеть использовать эту удаленную часть памяти.

Таким образом, решение может состоять в том, чтобы иметь связанный список узлов, которые можно использовать повторно.Всякий раз, когда мы удаляем что-то из нашей структуры данных, мы добавляем часть памяти (то есть узел) в связанный список, который отслеживает возможность многократного использования памяти.

Поэтому, когда нам нужно что-то добавить к нашим даннымВначале мы проверяем, есть ли какой-нибудь узел, который можно использовать повторно, в нашем «списке, связанном с памятью».Если это не так, мы можем использовать sbrk как обычно.

1 Ответ

0 голосов
/ 05 октября 2012

Всякий раз, когда мы «просим» новую память, мы используем сервис sbrk, используя syscall.Однако, если мы удалили что-то из нашей структуры данных, мы можем захотеть использовать эту удаленную часть памяти.

Таким образом, решение может состоять в том, чтобы иметь связанный список узлов, которые можно использовать повторно.Всякий раз, когда мы удаляем что-то из нашей структуры данных, мы добавляем часть памяти (то есть узел) в связанный список, который отслеживает возможность многократного использования памяти.

Поэтому, когда нам нужно что-то добавить к нашим даннымВначале мы проверяем, есть ли какой-нибудь узел, который можно использовать повторно, в нашем «списке, связанном с памятью».Если это не так, мы можем использовать sbrk как обычно.

...