여러개의 폼이 있습니다. 그중 메인폼만 자동으로 뜨고 나머지는 동적으로 생성합니다.
Form:=TForm.create(application) -> 이렇게요..
근데 프로그램을 좀 돌리다 보면 메모리가 점점 늘어갑니다. 1) 메모리가 어디서 새는지 어떻게 알아볼수 있나요?
2)또 메인폼으로 돌아오면 혹시 열고 닫지 않은 메모리(다른 폼에서도)를 모조리 강제로 닫아버리고 싶은데 어떻게 하면 되지요?
마지막 메모리 문제 때문에 골치아픕니다. 메모리 문제에 대해서 자세한 답변 부탁합니다.
TForm.create(application)
TForm의 생성자는 Owner 를 인자로 받고 위처럼 Application을 넘겨주면
Application이 종료(파괴?)될때 생성한 객체의 메모리도 반환이 됩니다.
만일 직접 해제해 주지 않으셨다면 프로그램이 종료 되기 전까지
메모리는 계속 올라갈것입니다.
if assigned(Form1) then
begin
Form1.Free;
Form1 := nil;
end;
이런식으로 하면 Form1의 주소가 nil이 아니면 True인 assigned 함수를 이용하여 메모리를 해제해 줄수 있구요..
그리고 자료실에 보시면..
아마 memproof란 유틸이 있을겁니다.이걸로 메모리 누수를 체크할수 있습니다.