3

http://goog-perftools.sourceforge.net/doc/tcmalloc.html _ 「CMalloc は現在、システムにメモリを返しません。」42 MB を割り当てて解放すると、システムはそれを取り戻せませんが、次に 47 MB​​ を割り当てると、さらに 5 MB しか盗まれないということでしょうか? 私の質問は、ロードされた dll または .so モジュールで何が起こるかです。プログラムが終了するまで解放されない独自のメモリチャンクを取得しますか。実行時に更新可能な sw を書きたい場合は、プログラムを終了せずに新しい dll をロードする必要があるためです。だから私の質問は次のとおりです: -ltcmalloc を使用し、メモリを割り当てて解放する dll を常にロードおよびアンロードしていると、メモリの使用量が爆発的に増加しますか? ばかげた質問だと思いますが、各dllが独自のメモリ割り当てを使用するのか、メモリ割り当てがプロセスレベルごとに行われるのかはわかりません。

4

1 に答える 1

3

メモリは、DLL ではなくプロセスに属します。したがって、メモリは通常、プロセスが終了するまで保持されます。これは、あなたが求めているものだけでなく、ほとんどの malloc 実装に共通の機能です。

于 2011-05-12T10:02:02.437 に答える