C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[35514] Re:Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다.
초보짱 [skyb612] 1122 읽음    2004-06-10 09:15
답변 감사드립니다.
도움이 많이 되었습니다.
일단 알려주신대로 몇 가지 테스트를 좀 해봐야겠네요.
감사합니다.
즐거운 하루 되세요~~


김상면 님이 쓰신 글 :
: MFC의 경우에는 CFormView가 있습니다.
: 이 클래스는 TForm과 비슷한데
: 제가 경험한 CFormView는 단지 윈도우를 관리하는 클래스였을 뿐이었습니다.
: 무슨 말인가하면
:     CFormView* p = new CFormView();
:     delete p;
: 라고 한다고 해서 폼이 생성되고 삭제 되는게 아니라 폼을 관리하는 클래스만 생성되고 삭제 되더군요
: 우리가 눈으로 보는 폼의 생성 삭제와는 아무 관계없이....
:
: 그래서 메뉴얼을 둘러보니 이렇게 하라더군요
:    CFormView* p = new CFormView();
:     p->Create(...);
:     p->DestroyWindow();//Destroy이던가 하여튼 잘 모름..
:     delete p;
: 처음엔 무슨말인가 몰랐지만 곧 이해가 가더군요
: MFC는 API를 캡슐화한 클래스입니다. 따라서 MFC로 윈도우를 생성하지 못하고
: MFC 클래스의 인스탄스(변수)를 만들고 그 인스탄스에게 윈도우를 생성을 요청하고 ....삭제를 요청.... 이런씩으로 프로그램 되더군요
:
: 그래서 추론을 하나 했습니다. 그럼 이미 만들어진 윈도우를 MFC 클래스에게 관리를 넘기것도 가능하지 않을까...
: 과연 방법이 있더군요
:      Attach()
:      Detach()
: 첫번째것은 관리를 넘기는것이고 두번째는 그 반대입니다..
:
:
: 님의 경우도 이런 경우가 아닌가 생각합니다.
:
: 그럼
:
:
: 초보짱 님이 쓰신 글 :
: : TForm1을 하나 만들고 그 위에다가 버튼을 하나 올리구요.
: : 버튼을 누르면 새로운 Form2가 뜨도록 했습니다.
: : Form2는 BorderStyle이 bsDialog입니다.
: : 그리고 Form2에는 버튼과 몇개의 VCL 컴포넌트만 올렸죠.
: : 다음은 Form1의 버튼이 Click되었을 때의 코딩입니다.
: : (물론 Form2의 임의의 버튼의 ModalResult를 mrOk로 설정해두었습니다.)
: :
: : 01: void __fastcall TForm1::Button1Click(TObject *Sender)
: : 02: {
: : 03:     TForm2 *form2 = new TForm2(this);
: : 04:     int result = form2->ShowModal();
: : 05:     if (result == mrOk) {
: : 06:         MessageDlg("OK", mtWarning, TMsgDlgButtons() << mbOK, 0);
: : 07:     }
: : 08:
: : 09:     delete form2;
: : 10: }
: :
: : <질문 1>
: : 09번째 line이 없는 경우 Form2의 소멸자는 구현되어 있지 않고,
: : 09번째 line이 있는 경우 Form2의 소멸자에서 명시적으로
: : Form2에 있는 모든 컴포넌트들을 delete했습니다.
: : 그러나 두 경우 다 Form2가 닫힌 후에도 메모리가 해제되지 않았습니다.
: : 왜 그런가요?
: :
: : <질문 2>
: : Form위에 동적생성하지 않은 컴포넌트들을 소멸자나 Close()등에서
: : 명시적으로 delete 해주어야 하나요?
: : 만약, 그렇다면 소멸자는 언제 어떤식으로 호출해주어야 하나요?
: : 만약, 그렇지 않다면 소멸자는 언제 호출되어서 메모리를 해제하나요?
: :
: : 궁금합니다.
: : 고수님들의 답변 부탁드립니다.
: :

+ -

관련 글 리스트
35498 [질문]Form이 닫힐때의 메모리 관련 질문입니다. 초보짱 914 2004/06/09
35502     Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다. 김상면 1152 2004/06/09
35514         Re:Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다. 초보짱 1122 2004/06/10
35505         Re:Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다. Builder MySelf 1501 2004/06/09
35513             Re:Re:Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다. 초보짱 922 2004/06/10
35521                 Re:Re:Re:Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다. Builder MySelf 920 2004/06/10
35515                 Re:Re:Re:Re:[질문]Form이 닫힐때의 메모리 관련 질문입니다. 김성연 865 2004/06/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.