我需要使用一个特殊的库来跟踪我的内存泄漏,其中malloc()= allocate()
和free() = unallocate()
。免费()指针
我试图完成免费的linked-list
,但它似乎没有被释放的“根”值。
typedef struct _node {
struct _node *child;
char *command;
} Command_list;
void delete_commands(Command_list **root)
{
Command_list *temp;
while(*root != NULL){
temp = (*root)->child;
//printf("STRING: %s\n", *root->command);
unallocate(*root);
*root = temp;
}
}
是调用它的功能
void file_processing(....){
Command_list *root = allocate(sizeof (Command_list));
root = NULL;
....
delete_commands(&root);
}
}
我相信
Command_list *root = allocate(sizeof (Command_list))
没有被正确地去分配出于某种原因。 任何人都可以给我一些提示?
更新:我发现的,而不是
Command_list *root = allocate(sizeof (Command_list));
root = NULL;
,这个作品:
Command_list *root = NULL;
有人能向我解释为什么第一种方法不行?谢谢! :)
尽管您可以省略,但'''部分中可能存在错误。 – avakar
可以肯定的是,代码之间没有任何问题,因为不同的尝试似乎已经解决了这个问题。 – rlhh
我不关注。为什么刚刚在分配内存之后设置'root = NULL'? –