Namara

毎日コード。手助けなし。

2026-08-20

greeting.c

const char *greeting(void) {
    char msg[] = "hello";
    return msg;
}

このコードはコンパイルできますが壊れています。何が問題で、どのように最小限の変更で直せるでしょうか?

答え

msgはローカル配列であり、greetingが返るときに破棄されるため、返されたポインタはダングリングポインタになります — その後で使用すると未定義動作です。関数呼び出しより長く生存する領域を与えてください:static const char msg[] = "hello"; return msg;