Zanurkuj w Pythonie/Tworzenie instancji klasy: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Sqrll (dyskusja | edycje)
Sqrll (dyskusja | edycje)
mNie podano opisu zmian
Linia 36:
... leakmem() #(2)
 
# Za każdym razem, gdy funkcja <code>leakmem</code> jest wywoływana, zostaje utworzona instancja klasy <code>FileInfo</code>, a ta zostaje przypisana do zmiennej <code>f</code>, która jest lokalną zmienną wewnątrz funkcji. Funkcja ta kończy się bez jakiegokolwiek wyraźnego zwolnienia pamięci zajmowanej przez zmienną <code>f</code>, a więc spodziewalibyśmy się wycieku pamięci, lecz tak nie będzie. Kiedy funkcja się kończy, lokalna zmienna <code>f</code> wychodzi poza swój zasięg. W tym miejscu nie ma więcej żadnych referencji do nowej instancji <code>FileInfo</code>, (ponieważ nigdzie nie przypisywaliśmy jej do czegoś innego niż <code>f</code>), tak więc Python zniszczy instancję za nas.
# Niezależnie od tego, jak wiele razy wywołamy funkcję <code>leakmem</code>, nigdy nie nastąpi wyciek pamięci, ponieważ za każdym razem kiedy to zrobimy Python będzie niszczył nowo utworzony obiekt przed wyjściem z funkcji <code>leakmem</code>.
}}