c++ - 删除动态内存

标签 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 ...',我不知道如何正确删除它们。

谢谢!

最佳答案

您应该将 m_ht = nullptr; 移动到最后一行。否则后面的deletedelete[]无法获取地址释放。

关于c++ - 删除动态内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353671/

相关文章:

c++ - yyparse() 未在 Bison/Flex C++ 项目中仅针对某些版本的 gcc/bison/flex 声明

c++ - 嵌套类奇怪函数查找: surrounding class functions hide global functions

c++ - 查找模板类型的模板类型 C++

python - 如果另一个列表中的元素差异小于某个值,如何对列表中的元素求和

list - 公平地划分列表

floating-point - 散列浮点向量的好方法?

android - HEVC 解码器端口 Android 警告 : invalid conversion from 'signed char*' to 'char const*

java - 将具有不同值的相同对象写入集合

java - 如何以及何时检查哈希表中的键是否为空

c# - 为什么不能将 null 用作 Dictionary<bool?, string> 的键?