Moin!
Ich versuche mir gerade C etwas näher zu bringen anhand des Galileo Openbooks "C von A bis Z". Beim aktuellen Kapitel (http://www.galileocomputing.de/openbook/c_von_a_bis_z/c_014_005.htm#RxxobKap014005040028BF1F0331A3) habe ich nun jedoch mal eine Frage:
Warum funktioniert das Programm:
#include <stdio.h>
#include <string.h>
char *myfunc(void) {
char *output = "Output";
//strcat(output, arg);
return output;
}
int main(void) {
char *result = NULL;
result = myfunc();
printf("Ergebnis der Funktion: %s\n", result);
return 0;
}
Folgt man der Argumentation im obigen Link, müsste doch ein Segmentation fault zu erwarten sein, da ja output ein lokaler Pointer ist und demnach nach Ausführung der Funktion vom Stack schon verschwunden sein muss.
Für entsprechende Aufklärung wäre ich dankbar!