C 如何检查结构是否已初始化?
我有一个用数据结构实现的表。我的代码的一个重要部分如下所示(h是一个数据结构,table是一个存储其他结构的表): 当我的代码运行时,一些表[i]将被初始化,而一些表[i]则没有初始化。每当我在一个尚未初始化的表[I]上测试代码时,我会得到一个valgrind错误,基本上说我不能使用未初始化的数组C 如何检查结构是否已初始化?,c,arrays,data-structures,initialization,C,Arrays,Data Structures,Initialization,我有一个用数据结构实现的表。我的代码的一个重要部分如下所示(h是一个数据结构,table是一个存储其他结构的表): 当我的代码运行时,一些表[i]将被初始化,而一些表[i]则没有初始化。每当我在一个尚未初始化的表[I]上测试代码时,我会得到一个valgrind错误,基本上说我不能使用未初始化的数组 我的问题是,如何检查某个h->table[I]是否已初始化?您不能。若要解决此问题,请始终在使用结构之前对其进行初始化(即使所有初始化操作都是将结构设置为已知的“空白”/“未填充”状态)。当您声明结构
我的问题是,如何检查某个h->table[I]是否已初始化?您不能。若要解决此问题,请始终在使用结构之前对其进行初始化(即使所有初始化操作都是将结构设置为已知的“空白”/“未填充”状态)。当您声明结构时,请使用calloc或memset将其全部设置为零,然后稍后将其与0或NULL进行比较,以检查是否未使用该结构。+1
calloc()
对于普通的init分配,我会想到,根据这些指针判断,如果使用得当,可能会有所帮助。+1表示真相和措辞“…”blank“/”not populated“state…”,因为这很可能与所有零不同!
(h->table[hash(key, h->size)]