Address of stack memory associated with local variable ‘hoge’ returned ワーニング

これはエラーではなくて警告でよく出ると思うのだが、この現象の解説がやはりというべきかここにあった。

char** ReadLineImpl::my_completion () {
    char* matches[1];
    matches[0] = "add";

    return matches;
}

要するに「単に配列などを定義しただけでは、一時的にメモリが確保されているだけなので、場合によっては正しいポインタを返さないかもしれないよ」という仕様由来の背景がある。

ああ、ややこしい。

解決策で最もわかりやすいのは変数を static で宣言することだろう。

なお、一般的な static の修飾子の説明はここあたり参照。

 

カテゴリーC
クリックclose

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です