Я только что подумал об использовании нового типа TDictionary. Но на QualityCentral я прочитал о двух утечках памяти, вызванных TDictionary:
http://qc.codegear.com/wc/qcmain.aspx?d=67355
Я только что реализовал предложенный обходной путь, в основном подклассы TDictionary, переопределяя деструктор и вручную освобождая два объекта, которые вызывают утечку:
destructor TMemCorrectedDictionary.Destroy;
begin
Values.Free;
Keys.Free;
inherited;
end;
Проблема в том, что Values и Keys доступны только для чтения свойств TDictionary, я не могу установить для них значение nil. Ну, для ясности, теперь все работает нормально, но я подумал, что произойдет, если CodeGear выпустит патч для утечки и снова освободит два объекта в их собственном деструкторе. Не приведет ли это к нарушению доступа?
Заранее спасибо за прочтение (и, надеюсь, за ответ).