मैं सिर्फTObjectList <T> क्यों है? मुक्त ऑब्जेक्ट्स साफ़ करें?
var
ObjList : TObjectList <TMyObject>;
...
ObjList := TObjectList <TMyObject>.Create (True);
ObjList.Add (TMyObject.Create);
ObjList.Clear;
वस्तु मुक्त नहीं है कि देखा। स्रोत कोड को देखते हुए ऐसा लगता है कि अधिसूचना Clear
में दर्ज की गई है (TList <T>
से विरासत में मिली)।
मेरा प्रश्न: क्या यह जानबूझकर है? क्या कोई कारण है कि कोई Clear
के मामले में इन अधिसूचनाओं को प्राप्त नहीं करना चाहता है? या इसे संग्रह कक्षाओं में एक बग के रूप में माना जा सकता है?
संपादित
जाता है कि कोई मुझे TMyObject
नाशक, जो निर्माता में जाने के लिए चाहिए था की चोटी पर लाइन
inherited Create;
डाल दिया। यही कारण है कि मुझे मेमोरी लीक की सूचना मिली है जो TObjectList
की तरह दिख रहा था आइटम को मुक्त नहीं कर रहा था। और स्रोत पर एक नज़र ने मुझे विश्वास दिलाया (मैं Count
संपत्ति द्वारा फंस गया था)। फिर भी आपकी सहायता के लिए धन्यवाद!
जंगली अनुमान: क्या आपने 'TMyObject.Destroy' को 'ओवरराइड' के रूप में चिह्नित किया है? –
आप कैसे माप रहे हैं कि वस्तु मुक्त नहीं होती है? –