プロジェクトにlibxml2のカスタムアロケータを追加しましたが、allocとfree呼び出しのリストが表示されます。私がチェックしようとしているのは、libxml2が断片化を処理する場合、どのように処理するかです。プログラム実行可能ファイルはメモリの増加を開始し、OSに戻しません。返されるメモリが小さすぎて、それを再利用するにはオーバーヘッドが大きすぎるとOSが判断した場合に、これが発生する可能性があることを示すlibxml2のドキュメントがあります。私のプログラムは、それらを使用して解放する多くの小さな割り当てを使用します。アプリケーションの残りの部分はスレッドベースのメモリプールを使用するため、そこにリークする可能性はありません。これらのプールは、ハンドラー呼び出しが繰り返されるたびにリセットされます。次の関数を使用して、割り当てを確認するためだけにデフォルトのアロケータを上書きしました。これを理解する助けが役立つかもしれません。
/* the function override the libxml2 default ones **/
void cfreeFunc(void* ptr);
void * cmallocFunc(size_t size);
void * cmallocAtomicFunc(size_t size);
void * creallocFunc(void *ptr, size_t size);
char * cstrdupFunc(const char *str);
xmlGcMemSetup(cfreeFunc, cmallocFunc, cmallocAtomicFunc, creallocFunc,
cstrdupFunc);