C でローカル変数へのポインタを返す方法
C では、ローカル変数へのポインタを返すことは一般的に推奨されません。関数の終了時に変数のメモリ空間の割り当てが解除される可能性があるためです。ただし、特定のシナリオでは、これを実現する必要がある場合があります。
整数へのポインターを返す関数を作成する必要があるシナリオを考えてみましょう。
int *count() { int myInt = 5; int * const p = &myInt; // Pointer to the local variable return p; }
この場合この問題は、関数の終了時に myInt 変数が破棄され、ポインタが無効なメモリ位置を指したままになるために発生します。
これに対処するにはこの問題を解決するには、変数に割り当てられたメモリを自動的に管理するスマート ポインターを利用できます。たとえば、 unique_ptr を使用できます:
unique_ptr<int> count() { unique_ptr<int> value(new int(5)); return value; }
ここで、 value は動的に割り当てられた整数のメモリを管理する unique_ptr です。これにより、関数の終了時に整数のメモリの割り当てが解除されず、返されたポインタを介して整数にアクセスできるようになります:
cout << "Value is " << *count() << endl;
以上がC でローカル変数へのポインタを安全に返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。