我有一个 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 ...',我不知道如何正确删除它们。
谢谢!
最佳答案
您应该将 m_ht = nullptr;
移动到最后一行。否则后面的delete
和delete[]
无法获取地址释放。
关于c++ - 删除动态内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353671/