Der Martin: Einige C-Fragen

Beitrag lesen

Hallo Christian,

Nein, der Speicherbereich, auf den output zeigt, wird hier *nicht* auf dem Stack alloziert. Der String "Output" ist nämlich (weil's ein String ist, der 1:1 in der Source-Datei vorkommt) schon in der ausführbaren Datei, die Du erstellst, enthalten und wird beim Laden des Programms in den Speicher geladen (genau so wie alle anderen Strings die Du direkt in den Source schreibst). Auf diesen (im Programm immer verfügbaren) Speicherbereich zeigt dann output, das Du zurückgibst.

guter Hinweis, daran habe ich nicht gedacht.
Das *kann* sein, muss aber nicht. Ob konstante Strings direkt im Code gespeichert und direkt referenziert werden, ist nämlich vom Compiler (bzw. dessen Optionen) abhängig.

char output[] = "Output";
Dann wird nämlich auf dem Stack ein Array der Größe 7 (6 Zeichen + 0-Byte) angelegt und dort dann "Output" reingeschrieben und das zurückgegeben.

Ja, hier ist es eindeutig.

Schönes Wochenende noch,
 Martin

--
Okay, Alkohol ist keine Antwort.
Aber manchmal vergisst man beim Trinken wenigstens die Frage.