5

一部のCライブラリには、カスタムメモリアロケータmalloc/free置換)を指定する機能があることがわかります。

  • どのシステム/環境/条件でそれが役に立ちますか?この機能は、MSDOS時代の残り物、または同様のもはや関連性のない問題ではありませんか?

背景ストーリー:

pngquantをさまざまなソフトウェア(iOSアプリからApacheモジュールまで)に埋め込むことができるライブラリにすることを計画しています。私はmalloc()/free()と自分のメモリプールを小さな割り当てに使用しています。合計で2MB〜50MBのメモリを使用しています。私はスレッドを使用していますが、メインスレッドに割り当てるだけで済みます。

4

2 に答える 2

2

メモリ割り当ての制御が重要なアプリケーション (たとえば、私の分野、ゲーム開発、またはその他のリアルタイムまたはほぼリアルタイムのシステム) では、ライブラリ内のメモリ割り当てを制御できないと、すぐに使用できなくなります。

于 2012-04-05T10:20:09.817 に答える
1

多くのmalloc/freeアルゴリズムが存在します。システムmallocは、ライブラリが処理しているタスクに対して最適化されていない場合があるため、呼び出し元は、パフォーマンスを最適化するためにいくつかの異なるタスクを試してみることをお勧めします。

頭に浮かぶいくつかは次のとおりです。

提供されたmalloc/free置換を呼び出すことによってCで使用できるBoehmガベージコレクターなどのガベージコレクションライブラリもあります(ただし、freeはダミーの関数呼び出しであり、互換性のために保持されます)。

考えられる用途もたくさんあります。たとえば、ライブラリ内のメモリの割り当てと解放をトレースできるデバッグmalloc / free関数を作成する場合があります。たとえば、SQLiteを使用してメモリの使用方法に関する統計を記録するものなどです(確かにパフォーマンスのコストですが、これはデバッグの状況です)。

于 2012-04-05T10:23:06.283 に答える