質問

  1. 2008年の投稿によると(私は今それを見つけることができません)、 glibcヒープチェック マルチスレッド環境では機能しません。 2010年にはまだ状況ですか?
  2. ヒープチェックはデフォルトで有効になりますか? (GCC 4.1.2)? malloc_check_を設定しません。Mcheck()を呼び出すことを知らないでください。たぶんそれはいくつかのコンピレーションフラグによって有効になっていますか?
役に立ちましたか?

解決

デフォルトでは、malloc_check_またはmcheck()を使用せずに、Glibcは同じメモリチャンクで2回無料()を呼び出すなど、パフォーマンスを傷つけない小さなチェックを行います。そのため、これらのメッセージの一部を取得していますが、Malloc_Check_を使用して得られるMalloc代替API(はるかに多くのテストを行っているが、CPU集約型もはるかに多く)を使用して得られるすべてのメッセージが提供されることはありません。これを確認し、エラーをトリガーし、malloc_check_の有無にかかわらずテストすることができます。たとえば、単純なダブルフリー()の場合、「ダブルフリーまたは破損(上)」または「free():malloc_check_を設定する場合はいつでも依存します。

1/質問に答えるために、Mcheckは存在するため(15年など)、Mallocフックに依存しており、それらは糸を安全にすることを意図していません。

出典:glibc/malloc/malloc.c、 http://sourceware.org/bugzilla/show_bug.cgi?id=9939

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top