我有一堆看起来像的结构
typedef struct {
A[1..100] *next; // this is not an array, just indicating A1 or A2 or A3 and so on
//other stuff that varies from struct to struct
} A[1..100] // A1, A2, and so on
我生成了一些不同的相同类型结构的链表。在函数的某个地方,我用类似的东西分配内存
A55 *struct_list;
A55 *next_in_list;
struct_list = (A55 *)malloc(sizeof(A55));
(*struct_list).next = NULL;
//some loop
next_in_list = (A55 *)malloc(sizeof(A55));
(*next_in_list).next = struct_list;
struct_list = next_in_list;
在循环的末尾,struct_list
是一个指向链表末尾的指针。
我希望有一个函数可以释放任何列表,而不管填充它的结构如何。我觉得以下可能有效,但我需要一些不会违反任何规则并且可能安全实施的东西:
void freeStruct(*void start){
void ** current, * next;
current = (void **) start;
do{
next = *current;
free(current);
current = (void **) next;
}while(current != NULL)
}
我的问题是 NULL 对于所有类型的所有指针是否具有相同的数值,包括struct
. 而且,有没有更好的方法来做到这一点,而不必为不同的struct
定义复制相同的函数 100 次?