如何检查一个结构体是否已经初始化?

11

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

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

在我的代码运行时,某些table[i]将会被初始化,而有些则不会。每当我在一个尚未初始化的table[i]上测试我的代码时,我都会收到一个valgrind错误,它基本上是说我无法使用未初始化的数组。
我的问题是,我该如何检查特定的h->table[i]是否已经被初始化了?
2个回答

7
您无法这样做。为了解决问题,在使用结构之前始终初始化结构(即使所有的初始化只是将结构设置为已知的“空白”/“未填充”状态)。

+1 calloc() 这个函数适用于初始化分配,考虑到这些指针,如果正确使用的话,很可能会有所帮助。 - WhozCraig
+1 是为了表明真相,以及使用 "... "空白"/"未填充" 状态的措辞,因为这可能与所有零值不同! - alk

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接