저는 C++를 배우고 Hash 클래스를 작성하려고합니다. 지금까지는 프로그램이 해시 클래스를 사용하여 끝났을 때 내 해시 테이블과 관련된 메모리 누수가 있다는 사실을 제외하고는 모든 것이 훌륭하게 작동합니다. 힙에 저장된 요소를 삭제할 소멸자를 작성하는 데 도움이되기를 바랍니다.C++에서 특정 해시 클래스에 대한 메모리 할당을 해제하는 소멸자
여기 내 hashclass.h 파일입니다 :
class Hash {
public:
Hash();
/* Bunch of methods here*/
virtual ~Hash();
private:
static const int size = 20;
struct item{
string name;
int number;
item* next;
};
item* HashTable[size];
};
그리고 내 hashclass.cpp에 내 생성자에 대한 다음과 같은 구현이 :
Hash::Hash(){
for (int i = 0; i < size; i++) {
HashTable[i] = new item;
HashTable[i]->name = "";
HashTable[i]->number = 0;
HashTable[i]->next = NULL;
}
}
사람이 적절한를 작성하는 방법을 설명 할 수 있을까를 이 해시 테이블을 작성하는 데 사용되는 모든 메모리 블록의 할당을 해제하는 소멸자.
소멸자를 제외하고 왜 초기 할당 배열의 각 슬롯에 동적 할당을 준비하고 있습니까? 그 슬롯에있는'nullptr'는 노드 - 투 - 아무데도 "아무것도 없습니다"를 나타내는 것보다 적절합니다. 'item'은 매개 변수화 된 생성자가 필요합니다. 처음에 저장할 데이터가있을 때만 필요하다는 것을 알아야합니다. – WhozCraig
이 정보를 사용하여 메모리를 할당 해제 할 소멸자를 빌드하는 방법을 자세히 설명해 주시겠습니까? 나는이 것들에 관해서 매우 초보자입니다. – Hoomanium