C では、ダングリング参照は、存在しないオブジェクトを参照するときに発生します。参照を使用すると、ランタイム エラーが発生する可能性があります。
次のコード スニペットを考えてみましょう。
int& bar() { int n = 10; return n; } int main() { int& i = bar(); cout << i << endl; return 0; }
このコードは、bar() 関数内のローカル変数 n への参照を返します。ただし、bar() 関数が返されると、ローカル変数 n は破棄され、参照 i はぶら下がったままになります。 i を使用しようとすると、実行時エラーが発生します。
ダングリング参照を回避するには、参照先のオブジェクトが参照の有効期間中有効であることを確認する必要があります。これは、静的変数またはグローバル変数を使用して実現できます。
int& bar() { static int n = 10; return n; } int main() { int& i = bar(); cout << i << endl; return 0; }
この変更されたコードでは、変数 n は bar() 内で静的変数として宣言されています。これにより、関数が戻った後でも n が有効なままになります。したがって、参照 i も有効であり、安全に使用できます。
以上がC でのダングリング参照はどのようにして回避できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。