В Delphi XE6 у меня есть TDictionary под названием WordDict, в котором хранятся экземпляры TWordRec. Определения следующие:
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 сразу после загрузки? Могу ли я удалить все записи из словаря ТОЛЬКО при закрытии приложения? Я, очевидно, не понимаю, ПОЧЕМУ я получаю утечку памяти на TWordRec, поэтому я не знаю, как ее решить ...
Спасибо!
TObjectDictionary
и создать его с помощью[doOwnsValues]
- person bummi   schedule 02.09.2014