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
[68991] 감사합니다.~
문경재 [] 1312 읽음    2013-01-15 15:54
감사합니다.
박지훈님 덕분에 몰랐던 좋은 정보를 배워갑니다~

박지훈.임프 님이 쓰신 글 :
: 아직 C++빌더의 방식에 익숙하지 않으신 것 같습니다.
: C++빌더에서 모든 컴포넌트는, Owner 구조를 이용해서 자동으로 해제가 가능합니다. 그래서 명시적으로 delete를 할 필요가 없습니다.
: 모든 컴포넌트의 조상인 TComponent 클래스의 생성자를 보면 단 하나의 인자 Owner를 가지고 있으며, 이 Owner로 다른 컴포넌트를 지정해주면 그 컴포넌트가 현재 생성중인 컴포넌트의 메모리 해제를 책임지게 됩니다.
:
: [VCL] Sender, Parent, this, Owner 에 대한 설명
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=15
:
: 문경재님의 코드에서 메뉴아이템을 생성하는 코드에 보시면 new TMenuItem(Application) 이렇게 하셨으니, Application 객체를 Owner로 지정하신 것입니다. 이것은  객체가 해제될 때 이 메뉴아이템 객체가 덩달아 해제된다는 의미입니다.
:
: 폼에 속한 컴포넌트를 생성하면서 Owner로 Application을 지정한 것은 좀 적절하진 않은데요. 애플리케이션이 실행중인 상태에서 이 폼이 중간에 해제될 수도 있는데, 그렇게 되면 이 메뉴아이템은 애플리케이션이 끝날 때까지 계속 메모리를 점유하게 됩니다.
:
: 그래서 당연히, 폼에 속한 컴포넌트를 동적 생성할 때는 Owner를 폼으로 지정하는 것이 가장 일반적입니다. 반드시 Owner로 Application을 지정해야 하는 경우도 있는데요, 폼을 동적으로 생성할 때죠.
:
: 컴포넌트나 폼을 동적으로 생성할 때 이 Owner를 지정하지 않고 대신 NULL을 넘길 수도 있습니다. 그러면 짐작하시겠지만 누구도 해당 객체의 해제를 자동으로 해주지 않으므로 개발자가 직접 delete로 삭제해야 합니다.
:
: 이 Owner 방식은 자바 등의 가비지컬렉션과 좀 비슷한 효과를 갖지만, 가비지컬렉션처럼 느리지도 않고 가비지컬렉션처럼 복잡한 로직으로 동작하지도 않습니다. 심플하고 빠릅니다.
:
:
:
: 문경재 님이 쓰신 글 :
: : 콤보박스에 적혀 있는 갯수만큼 메뉴아이템을 추가해야해서
: :
: : 콤보박스의 내용이 변경될때마다
: :
: : //콤보박스만큼돌면서 팝업메뉴에 넣어주기
: :   for(int i = 0 ; i < AdvComboBox3->Items->Count ; i++)
: :   {
: :     TMenuItem * miStatus = new TMenuItem(Application);
: :     miStatus->Caption = AdvComboBox3->Items->Strings[i];
: :     PopupMenu1->Items->Insert(i,miStatus);
: :   }
: :
: : 이런식으로 했는데요.
: :
: : 질문1. new를 했으니 어딘가에서  delete를 해줘야할것 같은데 콤보박스가 계속 바뀌어서..어디서 해줘야 할지...
: :
: : 질문2. 동적으로 만들어진 menuItem을 클릭했을때 이벤트를 발생시키려면 어떻게 해야하는지..
: :
: :
: :
: : 감사합니다.~

+ -

관련 글 리스트
68959 TPopupMenu안의 MenuItem동적할당 질문드립니다... 문경재 2909 2013/01/11
68973     Re:TPopupMenu안의 MenuItem동적할당 질문드립니다... 박지훈.임프 1482 2013/01/12
68972     Re:TPopupMenu안의 MenuItem동적할당 질문드립니다... 박지훈.임프 1739 2013/01/12
68991         감사합니다.~ 문경재 1312 2013/01/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.