【发布时间】:2013-11-28 14:49:18
【问题描述】:
我有一个 HashMap 类,一切似乎都运行良好,但是我遇到了内存泄漏问题。
下面是我的 HashMap 类私有成员变量/函数
struct Node
{
std::string key;
std::string value;
Node* next;
};
HashFunction hashfunction;
Node** bucketList;
int* numberOfPairs;
int logins;
int lengthOfMap;
这是我的默认构造函数:
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);
}
我有bucketList指针,指向一个Node数组,每个Node指向一个链表的开头。
到目前为止,这是我的析构函数:
HashMap::~HashMap()
{
delete numberOfPairs;
delete bucketList;
}
我是在删除列表之前删除列表中的每个节点(我会在早上解决这个问题,但我想问一下),还是我完全遗漏了其他东西?
【问题讨论】:
-
您为什么不阅读 Valgrind 生成的诊断并自己解决这个问题?
-
是的,您删除了每个节点。指针永远不会删除自己。
标签: c++ pointers hashmap delete-operator