나는 다음과 같은 클래스를 사용하고내 앱의 메모리 누수 위치를 어떻게 알 수 있습니까?
mycalss = class
public
Self.timer1: TTimer;
Self.abitmap: tbitmap;
Self.animage: TImage;
Self.formxyz:form;
//some other declaration
//also having my own constructor and destructor overridden
end;
버튼이 myclass1가 생성됩니다 클릭하고 난 창문 작업 만들기 버튼을 클릭 어느 때 다른 버튼을 클릭 myclass1는
begin
FreeAndNil(Self.timer1) ;
FreeAndNil(Self.abitmap) ;
FreeAndNil(Self.animage);
//others
Self.formxyz.Close ;
FreeAndNil(Self.formxyz);
FreeAndNil(Self) ;
inherited Destroy;
end;
파괴 될 때 관리자가 800 KB의 메모리 소비 증가를 보여 주며 내가 클릭 할 때마다 500kb의 용량이 감소합니다.
크기 증가가 생성 될 때 (o ther 부작용) 내 애플 리케이션은 간단한 하나입니다.
질문 : 나는 델파이 응용 프로그램 (나는이 제대로 확보 할 경우) 작업을 파괴에 제거하기 위해 만든 모든 객체 (~ 800킬로바이트)를 제거 것으로 예상 할 수있다? 당신이 클래스에 할당
사실 개체를 파괴하면 파괴 절차에서 Free() 만 호출 할 수 있습니다. 변수를 다시 할당해야하는 경우에만 FreeAndNil()을 사용할 수 있습니다. – evilone
'FreeAndNil (Self)'부분이 틀렸어. – CodesInChaos
또한 생성자가 끝날 때'상속 된 파괴 '를 호출하는 것이 더 좋습니다. – CodesInChaos