delete |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:デリート |
外語:delete |
品詞:名詞 |
|
概要 |
削除をするときに使う。
確保されたメモリーの解放などに使う。
特徴 |
C++ |
この時、確保されていたのがクラスのインスタンスであればデストラクターが呼ばれる。
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を使う。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |