0

このコードの後 _var2 はDangling pointer.

int* _var = new int(102);
auto _var2 = _var;
delete _var;

_var2 ( delete _var2) を削除する必要がありますか? それは必然ですか?

4

3 に答える 3

4

いいえ、すでに削除されているためです。

このdeleteキーワードは実際にはポインタを削除するのではなく、それが指している値を削除します。この場合、1 行目のヒープに整数 102 を割り当ててから、3 行目でその整数を削除します。両方のポインタ (_varと) は、整数があっ_var2たアドレスを保持していますが、もう存在しません。 そのアドレスには何も割り当てられていないため、正しくありません。delete _var2

于 2014-08-16T07:30:12.943 に答える