2011-01-14 6 views
0

私はマルチスレッドアプリケーションを使用しています。データをバッファに割り当て、キューからソケット経由で送信するようにします。プログラム全体(1024,2048,2080、および5248バイト)で固定サイズのバッファのみを使用するため、すべてのバッファが再現可能です。私の気づいたことは、私のプログラムは通常、同じ瞬間に各長さタイプのバッファを最大10個使用することです。Linuxでのメモリ割り当て

これまでのところ、私はいつも新しいバッファを手動で割り当ててから、それを解放しました(malloc()とfree()を使って)。私はLinuxが私にとってこのメモリをキャッシュするのに十分なスマートなのかどうか疑問に思ったので、次回に新しいバッファシステムを割り当てると、以前に使用していたバッファをただちに受信し、

答えて

2

はい、malloc()は、空きリストに要求を満たすものがない場合にのみsbrk()/ brk()を呼び出します。これは、malloc()/ free()を同じサイズのメモリで好きなだけ呼び出すことができ、うまくいくことを意味します。

これは本当に実用的なソリューションであるかどうかは別の質問ですが、それは問題ではないほど速いかもしれません。

+0

mallocは、匿名メモリのmmapなど、メモリを割り当てるためにsbrk以外の手段を使用することがあります。 – user562374