장성호님의 친절한 답변 감사드립니다...
많은 도움이 되었습니다.
장성호 님이 쓰신 글 :
: 자주 호출하게 되면
: 당연히 Create를 반복하니까.. 메모리가 올라가겠죠
:
: 자주 호출하게되면 경우
:
:
: void __fastcall TForm::CreateForm()
: {
: if(frmrCreate==NULL)
: frmCreate = new TfrmCreate(this);
:
: //... 중략
: frmCreate->Close();
: }
:
:
: 위와같이 frmCreate변수가 NULL인경우에만 다시 생성하도록 하는 방법이 있구요
:
: 매번 new , delete 를 반복해두 되구요
:
: 그럼..
:
: 탱구리파 님이 쓰신 글 :
: : 장성호님 자세한 답변에 감사드립니다.
: :
: : 그렇다면
: : void __fastcall TForm::CreateForm()
: : {
: : / /동적 폼 생성
: : frmCreate = TfrmCreate(this);
: : //... 중략
: : frmCreate->Close();
: : }
: : 위와같이 하고 CreateForm() 함수를 주기적으로 호출하였을 경우
: : 메모리가 계속해서 증가가 될까요?
: :
: : 만약 증가가 된다면 delete frmCreate; 를 추가 하면 해결이 되나요?
: :
: :
: :
: : 장성호 님이 쓰신 글 :
: : :
: : : frmCreate = TfrmCreate(this);
: : :
: : :
: : :
: : : 위와같이 Form이나 Componnet를 생성할경우..
: : : 파라메터로 넘겨준 this는 생성한 componnet의 Owner가 됩니다.
: : :
: : : Owner란? 그 옛날 순장제와 같이.. 주인(Owner)가 죽으면 하인(위에선 frmCreate)도 같이 죽습니다.
: : :
: : : 하지만 Owner가 죽기전에 하인(frmCreate)가 죽을수도 있습니다.
: : :
: : : 즉 첫번째 방법은 화면만 Close(Visible=false)한 상태이구요
: : : 두번째 방법은 하면Close후에 하인이 죽는(delete)상태입니다.
: : :
: : : 첫번째는 화면만 Close되어있기 때문에 언제든 재 사용가능하구..
: : : this가 죽을때 같이 죽습니다.
: : :
: : :
: : : 그럼..
: : :
: : :
: : : 탱구리파 님이 쓰신 글 :
: : : : void __fastcall TForm::CreateForm()
: : : : {
: : : : / /동적 폼 생성
: : : : frmCreate = TfrmCreate(this);
: : : : //... 중략
: : : : frmCreate->Close();
: : : : }
: : : : 이렇게 했을 경우와
: : : :
: : : : void __fastcall TForm::CreateForm()
: : : : {
: : : : / /동적 폼 생성
: : : : frmCreate = TfrmCreate(this);
: : : : //... 중략
: : : : frmCreate->Close();
: : : : delete frmCreate; <-- 추가
: : : : }
: : : : 이렇게 했을 경우의 차이점과 어떻게 하는것이 맞는건지 설명 부탁합니다.