delete

読み:デリート
外語:delete 英語
品詞:名詞

C++の予約語の一つ。演算子の一つ。

目次

削除をするときに使う。

確保されたメモリーの解放などに使う。

C++

newによってヒープに確保されたメモリーを解放する。

この時、確保されていたのがクラスのインスタンスであればデストラクターが呼ばれる。

C++では、new/delete演算子を用いてメモリー等の確保と開放が可能。このためCの頃とは違い、malloc/free関数を用いる場面は殆どない。

なお、一度deleteして解放した領域を再度deleteした場合の動作は未定義である。さらに、deleteしても領域が解放されるだけで、ポインターがNULLになるわけではない。

Cで複数回free()した場合と同様、C++も複数回のdeleteで二重解放の脆弱性が生じる。

Java

Javaの場合、newで領域確保をする。しかし、領域解放はガベージコレクションで行なわれるため、deleteに相当するものがない。

Javaでは、CやC++にある二重解放の脆弱性を生じさせないようにするため、オブジェクトの削除はガベージコレクションに限定されている。

C++11

C++11では、メンバー関数の定義で、規定の動作を禁止することを宣言するのに使う。

class Example {

// ...

Example& operator=(const Example &) = delete;

Example(const Example &) = delete;

};

代入演算子やコピーコンストラクターを「削除」することができ、これによって安全なclassにすることができる。

逆に規定動作を規定動作として明示するする場合はdefaultを使う。

用語の所属
C++
Java
関連する用語
new
デストラクター
ヒープ

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club