11

我有一个用数据结构实现的表。我的代码的一个重要块如下所示(h 是一个数据结构,table 是一个存储其他结构的表):

(h->table[hash(key, h->size)]

在我的代码运行时,一些表 [i] 将被初始化,而有些则不会。每当我在尚未初始化的 table[i] 上测试我的代码时,我都会收到一个 valgrind 错误,基本上说我无法使用未初始化的数组。

我的问题是,我将如何检查某个 h->table[i] 是否已初始化?

4

2 回答 2

7

你不能。要解决此问题,请始终在使用之前初始化结构(即使所有初始化都将结构设置为已知的“空白”/“未填充”状态)。

于 2013-04-19T06:31:34.677 回答
1

当您声明您的结构时,使用 calloc 或 memset 将它们全部设置为零,然后与 0 或 NULL 进行比较以检查该结构是否未被使用。

于 2013-04-19T06:31:54.000 回答