/* Note: I've formatted the code for readability. */
const char * getString() {
const char *x = "abcstring";
return x;
}
リテラル文字列へのポインターを返すことが機能し、思ったほどセグメンテーション違反を起こさなかったことを発見して驚きました。リテラルはスタックにプッシュされるか、他の一時メモリに置かれると常に想定していましたが、関数のスコープに限定されていました。しかし、ここでは、私が想像していたよりも静的なようです。次に、実行可能ファイル全体にグローバルな文字列プールのようなものに入れられますか?
また、文字列リテラルをパラメータとして関数に渡しても同じですか?例えば:
/* Where is the string literal in this example being placed? */
myfunc(value1, value2, "rainbowdash");
誰かが私を啓発できることを願っています。前もって感謝します!:)