C 初始化无新的或malloc/calloc/等



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_ptrshared_ptr

  • std::vectorstd::array

  • 等容器

您需要阅读一本好的现代C 入门书。从" C 之旅"开始。


如果您正在进行手动资源管理(...为什么?),您还想遵循五个规则。

相关内容

  • 没有找到相关文章

最新更新