Q&A

  • DLL폼생성후.. 메모리 제거가 않되는데. 어찌된건지..
안녕하세용... 델초입니당...



검색해보니.. 비슷한것이 있긴 하지만.. 해결책을 찾기란 쉽지않군요...

이리저리.. 이것저것도 해봤는데여.. ㅡㅡ;



DLL안에는 폼이 한개있습니다.. 자체적으로 Indy컴포넌트 몇개와.. ActionList와

리스트뷰.. 등등..이죠.. 문제는 호스트폼(DLL폼을 호출하는 폼)에서.. DLL폼을

모달리스로 호출을 합니다.. 물론 제대로 실행은 됩니다..

멋드러지게 뜨더군요.. ㅡㅡ;.. 하지만.. 이 DLL폼들을 닫은 후에... 그리고

호스트폼을 제거한 후에도 제대로 메모리가 해제되지 않습니다. 결국 Access Violation

을 내고 말더군요..



DLL폼을 호출하는 함수입니다..



// Dll 내의 구현 부분

function CreateForm( ParentApplication: TApplication;

ParentForm: TForm;

Info: TLoginInfo ): HWND; export; stdcall;

var

cf : TClientForm;

begin

cf := TClientForm.Create( ParentForm );

cf.LoginInfo.Assign( Info );

cf.Show;

cf.Connect;



result := cf.Handle;

end;



정리해보면..)

만든 DLL을 동적링크시켜서 실행시키니, 모든 ClientForm을 닫은(OnClose에서

caFree하였습니다) 후에도 메모리가 제대로 해제되질 않습니다. FreeLibrary할때에,,

Access Violation이 납니다. 델파이 데이타타입을 사용하는가 해서

ShareMem을 추가시켜도 보았습니다.

그래도, 소용없더군요..





0  COMMENTS