Sadece TObjectList <T> Neden serbest nesneleri temizlemiyorsunuz?
var
ObjList : TObjectList <TMyObject>;
...
ObjList := TObjectList <TMyObject>.Create (True);
ObjList.Add (TMyObject.Create);
ObjList.Clear;
nesne serbest olmadığını fark ettik. Kaynak koduna bakarak,
Clear
(
TList <T>
'dan miras alınan) hiçbir
cnRemoved
bildiriminin tetiklenmediği anlaşılıyor.
Sorum: Bu kasıtlı mi? Clear
durumunda bu bildirimleri almak istemeyen bir neden var mı? Veya bu toplama sınıflarında bir hata olarak kabul edilebilir mi?
DÜZENLEME
bir ben yapıcı gitmek gerekiyordu TMyObject
destructor, üstüne bir çizgi
inherited Create;
koymak çıkıyor. Bu yüzden, TObjectList
'un öğeleri serbest bırakmadığını gösteren bellek sızıntıları bildirildi. Ve kaynaklara bir bakış beni ikna etti (Count
mülkiyeti tarafından kapana kısılmıştım). Yine de yardımın için teşekkürler! Eğer .Clear
çağırdığınızda
Yabani tahminim: Eğer 'override' olarak' TMyObject.Destroy' işaretlenmiş mı? –
Nesnenin serbest kalmamasını nasıl ölçüyorsunuz? –