この非常に簡単なコードは、複雑な環境で発生するワイルドポインタの問題を示しています。ワイルドポインタを検出または防止する方法
int main()
{
int *a1 = new int;
int *tmp = a1;
delete a1;
// Now, the tmp pointer is a wild pointer, it's dangerous.
int *a2 = new int;
delete tmp;
// Now, the a2 pointer may be a wild pointer.
}
問題を検出または防止する方法はありますか?スマートポインタはここで助けますか?
¤はいそれはです正解なぜ聞いたの? –
2回目の 'delete'は未定義の動作を引き起こします。 – interjay
@Alf P. Steinbach実際には、いくつかのプロジェクトが野生の問題を検出するのを助けるので、スマートポインタを除いて他の方法を尋ねたいと思うので、コードの変更は少なくて済みます。 –