kurze (!) Frage zu dynamischen arrays
-
wenn ich ein int-array (int *arr) hab und das nach bedarf mit realloc dynamisch vergrößere, muss ich dann bei der freigabe nur
free(arr) schreiben oder alle indizes des arrays mit ner schleife durchlaufen und einzeln freigeben (free(arr[1]), free(arr[2]) ...etc.) um speicherlecks zu vermeiden?vielen dank schonmal für die freiwilligen antworten
-
für jedes 'malloc' musst du nur einmal 'free' aufrufen. 'realloc' kannst du dir als eine kombination aus 'free' mit anschliessendem 'malloc' vorstellen, also brauchst du auch nur einmal 'free' am schluss aufzurufen.
-
vielen dank! sehr hilfreich
-
Hinweis: Ein *foo_t ** ist kein Array. Und es wird auch nicht zu einem Array wenn man dafür via malloc()/etc Speicher holt.
-
ok array und zeiger sind nicht dasselbe, aber in dem fall erfüllen sie doch den selben zweck, oder?