Zum Beispiel Ich brauche zwei Stücke von Speicher malloc, so:Um robuste C-Programm zu schreiben, wie vermeiden Sie zu viele verschiedene freie() Kombinationen?
void *a = malloc (1);
if (!a)
return -1;
void *b = malloc (1);
if (!b)
{
free (a);
return -1;
}
Hinweis, wenn die zweite malloc fehlschlägt, muss ich „a“ zuerst befreien. Das Problem ist, kann dies sehr chaotisch sein, wenn es viele solcher malloc ist und die Fehlerprüfung des sind, es sei denn ich die berüchtigten „goto“ Klausel verwenden und sorgfältig die Reihenfolge der freien des arrangieren zusammen mit den Labels:
void *a = malloc (1);
if (!a)
goto X;
void *b = malloc (1);
if (!b)
goto Y;
return 0; //normal exit
Y:
free (a);
X:
return -1;
Haben Sie eine bessere Lösung für diese Situation? Danke im Voraus.
+1 sobald ich auch gleiches Problem, aber abgeschlossene Arbeit mit "unordentlich Code" konfrontiert .. !! –