so,如下所示。我一直在实现一个非常简单的哈希图,Hashentry类也很简单。
现在,我对C 没有超级经验,但可以说新的,删除和malloc/free/realloc/等都会导致我的系统崩溃,并且需要调整代码。我真的不确定没有这些工具如何处理构造函数和解构器。
我知道一些事情,例如,我可以这样初始化:string program(sizeVariable)
,但是我真的看不到该行table = new HashEntry*[TABLE_SIZE];
如何做到这一点,然后也丢失了以处理解构中删除的损失。
任何答案或建议都赞赏,也请原谅我的IDE中看起来并不丑陋的格式。
class HashMap {
private:
HashEntry **table;
public:
HashMap()
{
table = new HashEntry*[TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; i++)
table[i] = NULL;
}
...
~HashMap()
{
for (int i = 0; i < tableSize; i++)
if (table[i] != NULL)
delete table[i];
delete[] table;
}
}
新的,删除和malloc/free/realloc/et eft
您几乎不应该使用C 中的任何一个。对于日常C 开发,手动内存管理几乎已经死了。有很多更好的选择:
-
智能指针,例如
unique_ptr
和shared_ptr
。 -
std::vector
或std::array
。
等容器
您需要阅读一本好的现代C 入门书。从" C 之旅"开始。
如果您正在进行手动资源管理(...为什么?),您还想遵循五个规则。