Gibt malloc() auch Pointer auf Pointer frei??
-
Hallo!
Nur eine kleine Frage:
Wenn ich ein dynamisches Array habe (also char**), und es so allokiere:char** ein_array = (char**)NULL; int array_anzahl = 0; . . . char irgendein_text[100]; strcpy(irgendein_text, "Hello World"); //Später im Programm ein_array = (char**)realloc((char**) ein_array, (array_anzahl + 1) * sizeof(char**)); ein_array[array_anzahl] = (char*)malloc((strlen(irgendein_text)+1) * sizeof(char)); strcpy(ein_array[array_anzahl], irgendein_text); array_anzahl++; . . . //Speicher freigeben free(ein_array);
Nehmen wir mal an, ich hätte jetzt so 10 Elemente in dem dynamischen Array alloziert. Wenn ich nun das free() aufrufe, wir dann das gesamte Array freigegeben, also sowohl die allozierten Strings als auch das char**?
Grüsse,
code_pilot
-
afaik nicht.
es wird nur der Speicher für die Pointerliste freigegeben - der Rest schwebt irgendwo (R)IM RAM RUM oder so...also
for(i = 0; i < array_anzahl; i++) { free (ein_arary[i]); } free (ein_array);
edit : ich kann heut nichtmal mehr nen cpp-tag schließen..
-
code_pilot schrieb:
Nehmen wir mal an, ich hätte jetzt so 10 Elemente in dem dynamischen Array alloziert. Wenn ich nun das free() aufrufe, wir dann das gesamte Array freigegeben, also sowohl die allozierten Strings als auch das char**?
Nein, woher soll free wissen, dass du da drin Zeiger hast, die du jetzt auch freigeben willst?