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
[15882] [자답] [Q] TList 의 item 삭제하면 참조된 object도 삭제됩니까? (코드 있음)
최성규 [cs101] 887 읽음    2002-02-27 18:35
최성규 님이 쓰신 글 :
: 제목만으론 정확히 표현이 안되는 군요. 예제 코드를 적어 볼께요.
:
: typedef struct tagMyData {
:     int a;
:     int b;
: } TMyData;
: ...
: TList *MyList;
: ...
: // Data Add.. 이런 식으로 적당한 갯수 add 했다 합시다.
: TMyData *md = new TMyData;
: md->a = 10;
: md->b = 100;
: MyList->Add(md);
:
: // 하나의 데이터 삭제 (여기에 질문이 있습니다)
: // For a given index N (N은 당근  N >=0 && N < MyList->Count  임.)
: // OList->Items[N] 은 (void *) 이잖아요? 그래서,
: 1) TMyData *md = (TMyData *)OList->Items[N];    // 과 같이 md 로 casting된 pointer를 받고,
: 2) delete md;         // delete 연산자로 OList->Items[N] 이 참조하는 메모리를 해제 시도.
: 3) OList->Delete(N);  // OList 의 item 자체를 삭제
:
: 어떻습니까? 저는 나름대로 신경쓴다고, TList 의 한 Item이 참조하는 메모리를
: 먼저 날리고, 그 담에 TList의 item 자체를 삭제(Delete) 시도했던 것입니다.
: 이게 맞는 겁니까?
:
: 아니면, 3) OList->Delete(N); 만 해도 2) 에서 하고자 했던 참조된 메모리 해제까지
: 같이 하는 것입니까?
:
: 오래 전부터 애매하게 생각했던 부분인데, 이제야 질문을 올립니다.
:

제 잘못이네요.
제가 다른 코드 어디선가.. (TMyData *)OList->Items[N]을 받아서 한 번
delete 해 버렸어요. 크흐~~
당근 AccessViolation exception이 발생할 수 밖에...

※ 참, 저번에 저의 질문에 답해주신 '이경문'님. 감사드립니다. (__DATE__, __TIEM__)

+ -

관련 글 리스트
15879 [Q] TList 의 item 삭제하면 참조된 object도 삭제됩니까? (코드 있음) 최성규 808 2002/02/27
15882     [자답] [Q] TList 의 item 삭제하면 참조된 object도 삭제됩니까? (코드 있음) 최성규 887 2002/02/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.