我写了这个哈希图(这是电话面试练习的一部分),new Node(key, value)
当我放置一个元素时我会在其中做一个。我想确保在哈希图本身超出范围时进行清理。
我在这里错过了什么吗?有什么方法可以检查是否存在内存泄漏?
class HashMap {
private:
list<Node*> data[SIZE];
public:
~HashMap();
Node* get(int key);
void put(int key, int value);
int hashFn(int val){ return val % 13; }
};
HashMap::~HashMap(){
for(int i = 0; i < SIZE; ++i){
list<Node*>& val = data[i];
for(list<Node*>::iterator it = val.begin(); it != val.end(); it++){
Node* n = *it;
delete n;
}
}
}
对于古玩:完整的代码在这里:http ://rextester.com/EHPCYW12862
编辑:
另外,我真的需要最后调用 list.clear() 吗(因为我已经释放了列表中的所有节点)?