使用mmap
(使用MAP_PRIVATE和MAP_ANONYMOUS)分配内存比使用malloc
有什么缺点?对于功能范围的数据,我想无论如何,因此使用的堆栈内存不malloc.
想到的如果我使用mmap而不是malloc分配内存,该怎么办?
一个缺点是动态的数据结构,例如树和链表,在那里你经常需要分配和释放的小型数据块。使用mmap
由于两个原因将会是昂贵的,一个是以4096字节的粒度进行分配,另一个是需要进行系统调用。
但在其他情况下,您认为malloc
比mmap
更好吗?其次,我是否高估了动态数据结构mmap
的劣势?
的mmap
超过malloc
我能想到的一个优势是,内存被立即返回到操作系统,当你做munmap
,而与malloc/free
,我猜内存uptil数据段断点是永远不会回来了,但存放回用。
如果需要,malloc会为你调用mmap ...只需要坚持malloc。 – Macmade 2012-01-15 13:33:59
另一个缺点是,如果你使用'mmap'调用你的代码,它就变得不便携了。 – 2012-01-15 13:35:02
为什么让生活比它需要更复杂? – 2012-01-15 13:37:56