Dies kann ein Neuling Fehler sein, aber ich bin dankbar für alle Tipps, was genau ich falsch mache.Korrekte free() von String-Array C
Der Code:
int main()
{
int i =0;
char ** nameslist;
nameslist = malloc(5 * sizeof(char*));
for (i=0; i <5; i++)
{
nameslist[i]=malloc((20+1)*sizeof(char));
}
nameslist[0]="John";
nameslist[1]="Adam";
nameslist[2]="Nick";
nameslist[3]="Joe";
nameslist[4]="Peter";
for (i=0; i <5; i++)
{
free(nameslist[i]);
}
free(nameslist);
return 0;
}
Valgrind verwenden, sehe ich immer noch, dass ich Speicherlecks im Heap haben - wie behebe ich dieses Problem? Ich vermute, dass ich zu viel Platz malloc - aber immer noch, wie gehe ich über Freiraum, den ich nicht notwendig brauche?
Vielen Dank für Hinweise!
+1 Aufruf 'frei' auf den Konstanten ist wahrscheinlich auch keine gute Idee, die dies auch behebt. –