「Inside the C++ Object Model」という本のセクション 6.3 で、Temporary Objects (page 230):
実際の結果は、基になる削除演算子がアドレス指定されたメモリを実際に解放する際にどれだけ積極的であるかに基づいて、実装に依存します。一部の実装では、メモリを空きとしてマークしながら、実際には変更しません。メモリが他の何かによって要求されるまで、メモリは削除されていないかのように使用できます。明らかにソフトウェア エンジニアリングの模範的なアプローチではありませんが、メモリが解放された後にメモリにアクセスするという慣用句は珍しくありません。 実際、の多くの実装では、まさにこの動作を保証
malloc()
する特別な呼び出しが提供されています。malloc(0);
上記によると、malloc(0)
すでに解放されている(ただし、内容は変更されていない)メモリへのアクセスに関連しているようです。
私の質問は、malloc(0)
この動作をどのように保証できるでしょうか?