我正在考虑使用新的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发布一个修补程序来释放这两个对象并在它们自己的析构函数中再次释放它们,会发生什么。这不会导致访问冲突吗?
提前感谢您的阅读(和希望的回答)。