Metody realizacji języków programowania/MRJP Ćwiczenia 9

Z Studia Informatyczne
< Metody realizacji języków programowania
Wersja z dnia 16:22, 1 paź 2006 autorstwa Qrczak (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

autor: Marcin Kowalczyk (qrczak@mimuw.edu.pl)

Zadanie 1

Rozważmy następujący fragment programu w Pythonie:

class N:
    def __init__(self, name, children):
        self.name = name
        self.children = children
a = N('a', [])
b = N('b', [a])
c = N('c', [b])
b.children.append(c)
d = N('d', [c])
a = b = c = d = None

Które obiekty spośród obiektów a, b, c, d będą miały zwolnioną pamięć (z punktu widzenia dostępności zajmowanej przez nie wcześniej pamięci dla alokacji innych obiektów tego programu) natychmiast po wykonaniu ostatniej linii, a które w ogóle mają szansę mieć zwolnioną pamięć przed zakończeniem programu, jeśli odśmiecacz użytej implementacji Pythona działa na zasadzie:

  1. zliczania odwołań?
  2. mark & sweep?
  3. odśmiecania kopiującego?