c / intermediate
Snippet
Einheitliche Fehlerbereinigung mit goto
In der Systemprogrammierung ist die Verwendung von 'goto' für einen einzigen Ausgangspunkt ein akzeptiertes Muster, um sicherzustellen, dass alle belegten Ressourcen konsistent freigegeben werden und tief verschachtelte Logik vermieden wird.
snippet.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdlib.h>void process_data() {int *data = malloc(1024);if (!data) return;if (/* some error condition */ 1) {goto cleanup;}// ... more logic ...cleanup:free(data);}
Erklärung
1
goto cleanup;
Springt direkt zum Cleanup-Label und überspringt die restliche Funktionslogik.
2
cleanup:
Ein Label, das als Ziel für den Sprung dient und normalerweise am Ende der Funktion platziert wird.