에서 메모리 할당에 대한 혼란, 나는 TWordRec의 인스턴스를 포함 WordDict라는 TDictionary 있습니다. 정의는 다음과 같습니다델파이 - 델파이 XE6에서 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;
I 작성하고 사전로드 ....
WordDict := TDictionary<string, TWordRec>.Create;
WordDict.Add('CO', TWordRec.Create(True, False, False, ''));
WordDict.Add('CORP', TWordRec.Create(True, False, False, ''));
...
I 메모리 누수로 실행하고 내 TWordRec의 각각의 발생을 보여 AQTime을 사용하고있다 "누출 "기억. TWordRec으로 WordDict 항목을 만드는 중이면로드 한 후에 어떻게 처리합니까? 이 객체는 사전에 실제 객체에 대한 포인터가 아니기 때문에 처리합니까?
나는 즉시 로딩 후 TWord 처분합니까? 응용 프로그램이 종료 될 때만 내 사전에서 모든 항목을 삭제합니까? TWordRec에서 메모리 누수가 발생하는 이유는 무엇인지 이해하지 못하기 때문에 해결 방법을 모르겠습니다 ...
감사합니다!
레코드가 아닌 클래스를 사용하고 있으므로 TObjectDictionary를 사용하여'[doOwnsValues] '로 작성하는 것이 좋습니다 – bummi
사전 인스턴스를 해제하기 전에 Items 속성을 반복하여 각 TWordRec 당신이 넣어 인스턴스입니다. –