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