重複の可能性:
動的に割り当てられた配列を解放するためにdelete(delete [])で[]が使用されるのはなぜですか?
C ++にまだdelete[]とdelete演算子があるのはなぜですか?
私はそれらの違いが何であるか疑問に思っています、そして私はいくつかが言うかもしれない明白な答えを知っています、1つは配列を削除することであり、もう1つは単一のオブジェクトを削除することですが、なぜこれらの2つの操作に2つの異なる削除方法があるべきなのか疑問に思います?つまり、 deleteは基本的にfree
、ポインタが実際に配列を指しているのか単一のオブジェクトを指しているのかを気にしないCメソッドを使用して実装されます。私が考えることができる唯一の理由は、それが配列であるかどうかを知ることができ、最初のオブジェクトだけでなく各セルのデストラクタを呼び出すことができるということですが、コンパイラは配列を見ているだけでは配列の長さを推測できないため、それも不可能です。ポインタ。ちなみに、未定義動作を呼び出しdelete
て、割り当てられたメモリを呼び出すと言われていますnew[]
が、