Rückgabewert eines Pointers bei Fehler
-
Hallo,
vielleich eine blöde Frage, aber ich allokiere mehrmals Speicher. Das habe ich in eine Funktion ausgelagert. Rückgabewert ist ein Pointer auf den allokierten Speicher. Wie gestalte ich nun den Rückgabewert, wenn ich keinen Speicher allokieren kann?
Minimalbeispiel dazu:
int* speicherFuerFeldAllokieren(int feldgroesse) { int* feld = malloc(sizeof(*feld)*feldgroesse*feldgroesse); if(!feld) { printf("Fehler! Speicher kann nicht allokiert werden!"); return 0; /* was sollte ich hier zurückgeben? */ } else return feld; }
-
Was gibt denn malloc im Fehlerfall zurück?
-
Oder strstr, strchr, strrchr, strtok, strpbrk, memchr, fopen, ...
-
Den Nullpointer. Also handhabe ich das dann genauso?
Also würde ich mit meinem Minimalbeispiel ja nichts gewinnen. Die Fehlerbehandlung muss ich dann ja trotzdem außerhalb der Funktion machen?
-
Genau.
NULL steht für "nicht gültiger Zeiger"
Wie hast du dir die Fehlerbehandlung denn vorgestellt?
Irgendwie musst du in deraufrufenden Funktion darauf reagieren.Oder wolltest du ein
exit(EXIT_FAILURE);
machen?
Dann brauchst du dir um den Rückgabewert auch keine Gedanken machen
-
Darauf wirds dann wohl rauslaufen...
Aber prinzipiell heißt pointer = 0, dass der Zeiger nicht gültig ist?
Danke dir für die Hilfe!
-
Schreib bei Zeigern/Pointer zur besseren Lesbarkeit NULL und nicht 0.