Ich habe eine benutzerdefinierte struct
mystruct.Speicherverlust mit Valgrind in c
typedef struct mystruct
{
int data;
struct mystruct * parent;
struct mystruct * child;
struct mystruct * next;
}mystruct;
Jetzt habe ich Nachordnungsdurchquerung dieser mystruct in einer Funktion tue traverse()
mystruct * create(mystruct * root)
{
mystruct * newNode=malloc(sizeof(mystruct));
//change some pointers like make newNode->parent=root->parent
//
//
return newNode;
}
void traverse(mystruct * root)
{
if(root==NULL)
return;
//here I am calling a new function
if() // somecondition
{
mystruct * newNode=create(root);
root=NULL;
free(root);
root=newNode;
}
traverse(root->child);
traverse(root->next);
}
void delete(mystruct * root)
{
if(root==NULL)
return;
delete(root->child);
delete(root->next);
free(root);
}
Auch nach meiner Struktur am Ende freigegeben werden kann, zeigt valgrind
Gedächtnisverlust aufgrund newNode
geschaffen. Wie kann ich diese Speicherverluste entfernen?