|
제목만으론 정확히 표현이 안되는 군요. 예제 코드를 적어 볼께요.
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) 에서 하고자 했던 참조된 메모리 해제까지
같이 하는 것입니까?
오래 전부터 애매하게 생각했던 부분인데, 이제야 질문을 올립니다.
|