我的名为 的结构Table
包含一个名为 的结构的数组Object
。Object 持有指向另一个的指针Object
。我想做两种方法——一种释放 an Object
,另一种释放 aTable
当指向这些结构的指针时(ObjectP
和TableP
分别):
这是我目前的幼稚实现,它绝对不起作用,因为 valgrid 到处都是警告(我对来自 Java 的 c 真的很陌生):
/*
* Represents a linked list containing a key value
*/
typedef struct Object {
void *key;
struct Object *top;
struct Object *next;
Boolean originalCell;
} Object;
/*
* Represents a table that stores keys based on a given object's hash
*/
typedef struct Table{
Object *linkedObjects;
size_t size, originalSize;
HashFcn hfun;
PrintFcn pfun;
ComparisonFcn fcomp;
Boolean wasDuplicated;
} Table;
void FreeObject(ObjectP object)
{
free(object);
}
void FreeTable(TableP table)
{
free(table);
}
我应该如何正确释放这些结构?
编辑:
这就是我分配变量的方式:
ObjectP CreateObject(void *key)
{
struct Object *object = (struct Object*) malloc(sizeof(struct Object));
...
}
TableP CreateTable(size_t tableSize, HashFcn hfun, PrintFcn pfun, ComparisonFcn fcomp)
{
struct Table *table = malloc(sizeof(Table));
if (table==NULL)
{
ReportError(MEM_OUT);
return NULL;
}
table->linkedObjects = NULL;
table->linkedObjects = malloc(tableSize * sizeof(Object));
...
}