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
[37557] Re:객체 두번 죽이기....:)참고 하세요
방태윤 [nabty] 796 읽음    2004-10-11 12:31
저의 경우 객체를 delete 하는 방법은

if(List->Count){
  for(int i=List->Count-1;i>=0;i--){
    XXXObj *Obj = (XXXObj *)TList->객체 가져오기(i);
    List->Delete(i);
    delete Obj;
  }
}
위 같은 방법으로 삭제 하면 잘 삭제 됩니다.
for(int i=0;i<List->Count;i++){ 형식으로 하면 안되고요...
안되는 이유는 List->Delete(i); 에서 갯수가 하나씩 줄기 때문이고요..
list 에서 먼저 삭제를 하고 그후에 객체를 삭제하는 것이 제일 좋은것 같습니다.

그럼 참고 하세요...

친구들 님이 쓰신 글 :
: 먼저 XXXObj라는 객체 100개를 for문을 돌면서 TList에 담습니다.
: 어느정도 시간이 지난후...(지나든 안지나든 상관은 없습니다..)
: for문을 돌면서 100개의 객체를 다음과 같이 지웁니다..
:    for (int i = 0; i < 100; i++)
:     {
:         XXXObj *Obj = (XXXObj *)TList->객체 가져오기(i);
:
:         if (Obj != NULL) <==여기서 문제!!!!!!!!!
:         {
:             delete Obj;
:             Obj = NULL;
:         }
:     }
:
: 위와 같이 코딩해줫을때 이상한 에러가 나는경우가 있습니다..
: delete하는곳에서 이미 지워지고 없는객체라고 에러가 나오는 경우 입니다..
:
: 곰곰히 보니까..객체를 죽이고 또 죽이려고 하니까 위와 같은에러 메시지가 나오는것 같습니다..
:
: 근데 이상한건 그 죽은 객체는 if문을 타지 말아야 되는데 왜 if문을 타는걸까요..ㅡㅡ??

+ -

관련 글 리스트
37555 객체 두번 죽이기....:) 친구들 706 2004/10/11
37589     Re:객체 두번 죽이기....:) 서정국.새더 672 2004/10/12
37571     Re:객체 두번 죽이기....:) 김태선 743 2004/10/12
37557     Re:객체 두번 죽이기....:)참고 하세요 방태윤 796 2004/10/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.