1. ホーム
  2. c++

[解決済み] なぜdeleteはポインタをNULLにしないのですか?

2022-06-06 14:22:50

質問

の後に自動的にポインタがNULLに設定されるのはなぜなのか、いつも不思議に思っていました。 削除 が標準に含まれていないのか、いつも不思議に思っていました。もしこれがうまくいけば、無効なポインタによるクラッシュの多くは起きないでしょう。しかし、そうは言っても、標準がこれを制限したであろういくつかの理由を私は考えることができます。

  1. パフォーマンスです。

    追加の命令により delete のパフォーマンスを低下させる可能性があります。

  2. のせいでしょうか? const のポインタのせいかもしれません。

    そしてまた、標準はこの特別なケースのために何かをすることができたのだと思います。

これを許可しない正確な理由をご存知の方はいらっしゃいますか?

どのように解決するのですか?

ストロストルップ自身 に回答しています。 抜粋してみました。

C++では、明示的に 削除の実装がゼロになることを をゼロにすることができます。 実装がそうなることを期待していました。 しかし、その考えは実装者の間ではあまり浸透していないようで 実装者の間で広まっていないようです。

しかし、彼が提起する主な問題は、deleteの引数がlvalueである必要はない、ということです。