如何检查结构是否已初始化?

时间:2013-04-19 06:30:19

标签: c arrays data-structures initialization

我有一个用数据结构实现的表。我的代码的一个重要块看起来像这样(h是数据结构,表是存储其他结构的表):

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

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

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