클래스 HashMap이 있는데 모든 것이 잘 작동하는 것처럼 보입니다. 그러나 memoryleaks에 문제가 있습니다. 내가 노드의 배열을 가리키는 bucketList 포인터가C++ 클래스 삭제 (valgrind check)
HashMap::HashMap()
:hashfunction(hash), bucketList(bucketList = new Node*[INITIAL_BUCKET_COUNT]), numberOfPairs(numberOfPairs = new int[INITIAL_BUCKET_COUNT]),
logins(0),lengthOfMap(INITIAL_BUCKET_COUNT)
{
for(int i = 0; i < INITIAL_BUCKET_COUNT; i ++)
{
bucketList[i] = nullptr;
}
zeroFillArray(numberOfPairs, INITIAL_BUCKET_COUNT);
}
, 각 : 아래
내 HashMap의 클래스의 private 멤버 변수/함수
struct Node
{
std::string key;
std::string value;
Node* next;
};
HashFunction hashfunction;
Node** bucketList;
int* numberOfPairs;
int logins;
int lengthOfMap;
그리고 여기 내 기본 생성자되어 있습니다 노드는 링크 된 목록의 시작을 가리 킵니다. 지금 현재로
이 내 소멸자이다 : 나는 각 노드를 삭제 마십시오HashMap::~HashMap()
{
delete numberOfPairs;
delete bucketList;
}
(나는 아침에이 문제를 해결할 것입니다,하지만 난 상관없이 물어보고 싶은게) 나는 목록을 삭제하기 전에 목록에서 , 아니면 완전히 다른 것을 놓치고 있습니까?
왜 Valgrind가 생산 한 진단을 읽고 이것을 직접 파악하지 않습니까? –
예, 각 노드를 삭제합니다. 포인터는 스스로를 삭제하지 않습니다. – john