我正在尝试创建自己的 HashMap 以了解它们是如何工作的。我正在使用链接列表数组将值(字符串)存储在我的哈希图中。
我正在创建这样的数组:
Node** list;
而不是这个:
Node* list[nSize];
这样数组在运行时可以是任意大小。但是我认为由于我的操作方式而导致内存泄漏。我不知道错误在哪里,但是当我运行以下简单代码时,.exe 崩溃了。
为什么我的应用程序崩溃了,我该如何解决?
注意:我知道使用向量会比数组好得多,但这只是为了学习,我想挑战自己使用“动态”数组创建哈希图。PS:对于我正在使用的数组,这是正确的术语(动态数组)吗?
struct Node
{
// to implement
};
class HashMap
{
public:
HashMap(int dynSize)
{
*list = new Node[dynSize];
size = dynSize;
for (int i=0; i<size; i++)
list[i] = NULL;
cout << "END\n";
}
~HashMap()
{
for (int i=0; i<size; i++)
delete list[i];
}
private:
Node** list; // I could use a vector here but I am experimenting with a pointer to an array(pointer), also its more elegant
int size;
};
int main()
{
// When I run this application it crashes. Where is my memory leak?
HashMap h(5);
system("PAUSE");
return 0;
}