In reply to post ID 2537
Ne yazık ki olmaz; çünkü daha nesne sonlandırılmadan belleğinin geri verilmesini istiyorsun. Sonlandırıcı işlev geçersiz bellek üzerinde tesadüfen çalışıyor.
Bir kaç writeln ile:
Çıktısı:
Görüldüğü gibi, çöp toplayıcı sonlandırıcıyı yine de kendisi çağırıyor ama bellek geri verildikten sonra...
Ali
Bir kaç writeln ile:
import std.stdio; import core.memory; void main() { class deneme { this() { writeln("this()"); File dosya = File("ogrenci_bilgisi", "a"); dosya.writeln("İsim : ", "Zafer"); dosya.writeln("Numara: ", 123); dosya.writeln("Sınıf : ", "1A"); } ~this() { writeln("~this()"); File dosya = File("ogrenci_bilgisi", "a"); dosya.writeln("Bozucu :İsim : ", "Zafer"); dosya.writeln("Bozucu :Numara: ", 123); dosya.writeln("Bozucu :Sınıf : ", "1A"); } } auto örnek = new deneme(); writeln("GC.free öncesi"); GC.free(&örnek); writeln("GC.free sonrası"); }
Çıktısı:
this()
GC.free öncesi
GC.free sonrası
~this()
Görüldüğü gibi, çöp toplayıcı sonlandırıcıyı yine de kendisi çağırıyor ama bellek geri verildikten sonra...
Ali
acehreli
Show profile
Link to this post