删除动态内存

时间:2016-02-12 02:12:09

标签: c++ list hashtable dynamic-memory-allocation singly-linked-list

我有一个HashTable模板类,我在删除动态数组时遇到问题。 (SLList =单链表)

我的数据成员是:

SLList<Type>* m_ht;
unsigned int(*m_hFunction) (const Type &v);
unsigned int m_numOfBuckets;

在我的构造函数/赋值运算符中,我有'new'分配动态内存:

m_ht = new SLList<Type>[numOfBuckets];

我的析构函数:

m_ht = nullptr;
for (size_t i = 0; i < m_numOfBuckets; ++i) // idk if this for loop
    delete m_ht[i];                         // is correct
delete[] m_ht;

关闭程序并跟踪内存泄漏后,他们指向这些'm_ht = new ...',我不知道如何正确删除它们。

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该将m_ht = nullptr;移到最后一行。否则,以下deletedelete[]无法获取要发布的地址。