Wo abfragen, ob malloc geklappt hat
-
Hab mal ne etwas komische Frage, die mir eben so durch den Kopf gegangen ist. Wenn ich ein 1-dimensionales Array anlege, dann kann ich danach den Pointer Abfragen, ob genügend Speicher allokiert werden konnte:
int dim = 5; int *array = (int*)malloc(sizeof(int)*dim); if(array == NULL) error("Nicht genügend Speicher");
Wie macht man das bei nem 2-dimensionalen Array? So wie der folgende Code aussieht finde ich es ein wenig eigenartig. Oder ist das so richtig?
int dim = 5; int **array = (int**)malloc(sizeof(int)*dim); if(array == NULL) error("Nicht genügend Speicher"); for(int i=0; i<dim; i++) { array[i] = (int*)malloc(sizeof(int)*dim); // wirklich so ? if(array[i] == NULL) error("Nicht genügend Speicher"); }
-
Ja, das ist so richtig - du mußt theoretisch für jeden einzelnen malloc()-Aufruf überprüfen, ob er geklappt hat. (wenn dir das komisch vorkommt, kannst du die Fehlerbehandlung auch in eine Hilfsfunktion auslagern)
-
DarthZiu schrieb:
Oder ist das so richtig?
eigentlich schon. man muss jedes malloc einzeln abfragen.
aber du könntest ja auch so'n array mit einem malloc erzeugenint *array = malloc (sizeof(int)*zeilen*spalten);
nur der zugriff gestaltet sich dann etwas anders
int element_5_2 = array[5*spalten+2];