2

C++で使用free()するとどうなるかを考えていました。new

で使用free()するnew場合、メモリが解放される可能性があります。そのデストラクタだけは呼び出されません。ダングリングポインタに似た動作を残します。

上記では、ヒープが破損する可能性があるため、を使用free()しないでください。new

しかし、それでは、その振る舞いを概念的に視覚化したいと思います。

4

2 に答える 2

8

freeによって割り当てられたメモリでの使用newは未定義の動作です。newから返されたアドレスを返す保証はありませんmalloc。(実際、そうでnew[]はないことがよくあります。)

于 2012-08-30T19:07:29.673 に答える
1

これらをまったく混ぜないでください。newdeleteは、と同じようにペアになっていmallocますfree

newの動作はアプリケーションによって完全に再定義でき、ヒープとはまったく関係のない割り当て戦略を使用できることを忘れないでください。このため、freeによって生成されたポインタを使用して何もできないことに依存することはできませんnew。それらは2つの異なる世界です。

于 2012-08-30T19:07:39.667 に答える