c++言語を学び始めて3日くらいの超初心者です。
c言語は初心者向け教則本を読んだ+αくらいまでは学びました。
本題ですが、例えば以下のようなコードがあったとします。
c++
1int * func1(void) { 2 int a = 1; 3 return &a; 4} 5 6int & func2(void) { 7 int a = 1; 8 return a; 9}
これらの関数を記述してもエラーや警告の類は出なかった訳ですが、私には危険なコードに思えます。
関数内で宣言された変数は関数から抜けるとスタックから消滅してしまうため、外部からこういった関数を呼び出してしまうと、関数から値が返されたころには宣言した変数が消滅してしまうと思うからです。
警告が出ないのは、コンパイル時に自動でインライン展開されるからそのような事態は起こらないから安心していいよということなのでしょうか。
それともこのコードは危険なので、プログラマがこういったコードを書かないように気を付けるしかないのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。