上級 › ローカル変数への参照を返すとSegmentation faultになる原因 › パターン5
ローカル変数への参照を返すとSegmentation faultになる原因
関数のローカル変数への参照を関数の外に返してしまうバグです。
1 #include <iostream> 2 int& getScore() { 3 __________ s = 88; ^ 4 return s; 5 } 6 int noise2() { 7 int buf[8] = {0,0,0,0,0,0,0,0}; 8 return buf[0]; 9 } 10 int main() { 11 int& sc = getScore(); 12 noise2(); 13 std::cout << sc << std::endl; 14 return 0; 15 }
Segmentation fault
空欄を埋めてコンパイル・実行を通す
別の関数呼び出しを挟むと、同じスタック領域が上書きされクラッシュにつながります。
次の問題