我需要使用一個特殊的庫來跟蹤我的內存泄漏,其中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'? –