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つの異なる世界です。