それらがどのように機能するかを理解するために、独自の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;
}