Linux中的内存分配

时间:2011-01-14 19:47:45

标签: linux memory-management

我有一个多线程应用程序,我用数据分配缓冲区,然后在队列中等待通过套接字发送。所有缓冲区都是可重现的,因为我在整个程序中只使用固定大小的缓冲区(1024,2048,2080和5248字节)。我注意到,我的程序通常在同一时刻最多使用10个缓冲区。

到目前为止,我总是手动分配新缓冲区,然后释放它(使用malloc()和free()),不再需要它。我开始想知道Linux是否足够聪明地为我缓存这个内存,所以下次我分配新的缓冲区系统时,只能快速接收我之前已经使用过的缓冲区而不执行分配新内存块的繁重操作?

1 个答案:

答案 0 :(得分:2)

是的,当空闲列表中没有任何内容满足请求时,malloc()只会调用sbrk()/ brk()。这意味着您可以根据需要调用malloc()/ free()以获得相同大小的内存,这样就可以了。

这是否是一个真正高效的解决方案是另一个问题,但它可能足够快,无所谓。