В настоящее время я изучаю этот фрагмент кода. Это связанный список, реализованный в Ruby.Я особенно заинтересован в этих двух методах.
def removeLast
if @size <= 0
raise "No objects in list"
end
node = @last.prev
node.prev.next = @last
@last.prev = node.prev
@size -= 1
return node.object
end
def removeFirst
if @size <= 0
raise "No objects in list"
end
node = @first.next
node.next.prev = @first
@first.next = node.next
@size -= 1
return node.object
end
Эти два метода удаляют и возвращают узел из списка.Я не уверен, как Руби управляет сборкой мусора.Вы заметите, что оба метода явно не уничтожают узел, который они пытаются удалить.
Достаточно ли умен Ruby, чтобы освободить этот узел удаления из памяти без явного указания сделать это?
Если этого недостаточно, как правильно уничтожить удаленный узел и освободить его?память?