C++で使用free()
するとどうなるかを考えていました。new
で使用free()
するnew
場合、メモリが解放される可能性があります。そのデストラクタだけは呼び出されません。ダングリングポインタに似た動作を残します。
上記では、ヒープが破損する可能性があるため、を使用free()
しないでください。new
しかし、それでは、その振る舞いを概念的に視覚化したいと思います。
C++で使用free()
するとどうなるかを考えていました。new
で使用free()
するnew
場合、メモリが解放される可能性があります。そのデストラクタだけは呼び出されません。ダングリングポインタに似た動作を残します。
上記では、ヒープが破損する可能性があるため、を使用free()
しないでください。new
しかし、それでは、その振る舞いを概念的に視覚化したいと思います。
free
によって割り当てられたメモリでの使用new
は未定義の動作です。new
から返されたアドレスを返す保証はありませんmalloc
。(実際、そうでnew[]
はないことがよくあります。)
これらをまったく混ぜないでください。new
とdelete
は、と同じようにペアになっていmalloc
ますfree
。
new
の動作はアプリケーションによって完全に再定義でき、ヒープとはまったく関係のない割り当て戦略を使用できることを忘れないでください。このため、free
によって生成されたポインタを使用して何もできないことに依存することはできませんnew
。それらは2つの異なる世界です。