예를 들어, 여러 컬렉션의 ptrs 배열을 보유하는 라이브러리 클래스가 있습니다.ptrs 배열을 올바르게 삭제하는 방법은 무엇입니까? 내 소멸자는 실제 객체가 누락 된 것 같습니다.
ContentCollection** contents;
그러나 내 삭제는 실제 모음 (이 경우 나무)을 맞출 수없는 것 같습니다.
ContentCollection::~ContentCollection() {
deleteHelper(root); //Deletes Contents
}
//-----------------------------------------------------------------------------
//Deletes stored Contents
void ContentCollection::deleteHelper(Node* curr) {
if (curr != NULL) {
deleteHelper(curr->left);
deleteHelper(curr->right);
delete curr->data;
curr->data = NULL;
delete curr;
}
}
내가 꽤 분명 잘못 내 기억의 거의 아무것도 해제하지 뭔가를하고 있어요 : 여기
Library::~Library() {
//Delete stored ContentCollections
for (int i = 0; i < POTENTIALCONTENTTYPES; i++) {
delete contents[i];
contents[i] = NULL;
}
delete[] contents;
}
내가 큰 실수를 대비해서 나무에서 소멸자이다.
왜 모든 것이 포인터입니까? – chris
포인터의 배열을 가지고 있다면 배열을 걸어서'free (ptr)'라고 말한 다음 그 배열이 걸어 오면'free (array_ptr);' – Fallenreaper
@Fallenreaper가 아니라'free'가됩니다. 'delete'. 'free'는'malloc'으로 할당 된 메모리를위한 것입니다 (실제로 사용하지 않기를 바랬습니다). – chris