作者:Mr_XieZhiQ | 来源:互联网 | 2023-05-17 19:20
Iwrotethishashmap(thiswasapartoftelephonicinterviewexercise),whereIdoanewNode(key,
I wrote this hash map (this was a part of telephonic interview exercise), where I do a new Node(key, value)
when I put an element. I want to make sure I'm cleaning up when the hashmap itself goes out of scope.
我写了这个哈希映射(这是电话访谈练习的一部分),当我放置一个元素时,我做了一个新的节点(键,值)。我想确保当hashmap本身超出范围时我正在清理。
Did I miss anything in here ? Is there any way I can check if there is a memory leak ?
我在这里错过了什么吗?有什么方法可以检查是否有内存泄漏?
class HashMap {
private:
list 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 & val = data[i];
for(list::iterator it = val.begin(); it != val.end(); it++){
Node* n = *it;
delete n;
}
}
}
For the curios: complete code is here: http://rextester.com/EHPCYW12862
对于古玩:完整的代码在这里:http://rextester.com/EHPCYW12862
EDIT:
Also, do I really need to call list.clear() in the end (since I've already deallocated all the nodes in a list) ?
另外,我真的需要最后调用list.clear()(因为我已经释放了列表中的所有节点)吗?
4 个解决方案