|
객체를 두번 죽이면 에러가 납니다.
사람이나 컴퓨터나 두번 죽이는거는 아주 싫어 합니다. --;
TList 의 객체 포인트가 다른 객체를 가르켰다면 당연히 논리상, 실제로도 에러가 없습니다.
그러나 같은 객체를 가르키거나 객체 밑에 종속된 객체를 가르키는 경우,
말씀하신 에러와 만나게 됩니다.
참고하세요..
친구들 님이 쓰신 글 :
: 먼저 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문을 타는걸까요..ㅡㅡ??
|