私は C を使用して Unix/Linux で作業しています。メモリ割り当てがどのように機能するかについての基本的な理解があり、malloc() の後に free() を実行すると、実際にはページ全体を解放する可能性が低いことを十分に理解しています。したがって、free() の前後で getrusage() を使用しても、おそらく違いは見られません。
関連するメモリ領域が実際に解放されたことを確認するために、データ構造を破壊する関数の単体テストを書きたいと思います。私は OS に依存するソリューションに対してオープンです。この場合、私のプライマリ プラットフォームは
Linux beast 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
OS X とFreeBSDをセカンダリとして使用します。また、free() を比較的簡単にチェックできる解決策があれば、代わりに malloc() を使用することもできます。
明確にするために、私は大きなデータ構造を削除するルーチンをテストしています。割り当てられたすべての領域が実際に解放されていることを確認したいのですが、本質的には、特定のユニットに基本的なメモリ リークがないことを単体テストします。 . free() がその役割を果たしていると仮定します。コードが担当する割り当てられたすべての領域で実際に free を呼び出していることを確認しているだけです。
この特定のケースでは、それはツリー構造であり、ツリー内の各データに対して、構造は、ツリーに保存されているデータも削除するルーチンを呼び出す責任があります。これは、他の任意のものである可能性があります...