次のコードは、ダングリング参照を生成します。ダングリングリファレンス。ぶら下がっているポインタと参照の代替?
int main()
{
int *myArray = new int[2]{ 100, 200 };
int &ref = myArray[0];
delete[] myArray;
cout << ref; // Use of dangling reference.
}
私は、誰かがこれにメモリを削除した場合、私は参照を持っているもの、大きなプログラムで配列を削除してもいけません知っていますか?誰も配列を削除しないと何とか保証できますか?
ダングリング・リファレンスとダングリング・ポインタに対する最善の戦略は何ですか?
おそらく 'boost :: shared_ptr'。 –
http://stackoverflow.com/questions/395123/raii-and-smart-pointers-in-c。あるいは、この例では、最善の選択肢はそれをしないことです。 –
動的に割り当てられた配列の最良の代替手段は 'std :: vector'です。 C++では 'new []'と 'delete []'を使う必要はほとんどありません。しかし、それでもイテレータと参照は無効になります。一般的に、長い寿命を持たない人には、長期的な参照はしないでください。 – UncleBens