メモリ リークを追跡するには、特別なライブラリを使用する必要がmalloc()= allocate( )
ありfree( ) = unallocate( )
ます。
a の解放を完了しようとして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;
誰かが最初の方法が機能しない理由を説明できますか? ありがとう!:)