在Delphi XE6中,我有一個名爲WordDict的TDictionary,其中包含TWordRec的實例。定義是:德爾福 - 關於TDictionary中的內存分配困惑
WordDict: TDictionary<string, TWordRec>;
...
type
TWordRec = class
public
RemoveAlways: Boolean; // Is this CORP LLC, etc?
RemoveRestricted: Boolean;
Replace: Boolean;
ReplaceWith: string;
Constructor Create(B1, B2, B3: Boolean; S1: String); overload;
end;
當我創建並加載字典....
WordDict := TDictionary<string, TWordRec>.Create;
WordDict.Add('CO', TWordRec.Create(True, False, False, ''));
WordDict.Add('CORP', TWordRec.Create(True, False, False, ''));
...
我遇到了內存泄漏,以及使用AQTime,它顯示我TWordRec每次出現的「滲漏「記憶。如果我將WordDict條目創建爲TWordRec,那麼在加載後如何處理它們?我是否會處理它們,因爲這不僅僅是字典中指向實際對象的指針嗎?
加載後立即處理TWord嗎?當應用程序關閉時,是否僅從我的Dictionary中刪除所有條目?我顯然不明白爲什麼我在TWordRec上發生內存泄漏,所以我不知道如何解決它...
謝謝!
因爲您使用的是類而不是記錄,所以您可以考慮使用'TObjectDictionary'並使用'[doOwnsValues]'創建它' – bummi 2014-09-02 15:15:11
我猜,在釋放字典實例之前,必須迭代其Items屬性,釋放每個TWordRec您輸入的實例。 – 2014-09-02 15:16:00