【发布时间】:2011-11-29 14:47:23
【问题描述】:
我需要大块获取堆内存。而这些内存块将被用作内存池,直到进程退出才会被释放。
所以,传统的malloc 可能不像我想要的那么简单(也没有那么快)。
我认为,类似堆栈的分配 (LIFO) 会比 malloc 更有效。
是否有任何现有的库可以做到这一点? 或者我应该为此写一个新的?
PS:我猜obstack 最能描述我在说什么。还有其他关于obstack的候选人或介绍吗?
【问题讨论】:
-
您在问题中做了几个毫无根据的假设 - 只需使用常规 malloc 调用进行内存分配,一切都会正常工作。 (如果由于某种原因它没有,那么您以后可以随时替换 malloc 实现。)
-
在你跳得太远之前,你有没有尝试过一些替代的 malloc 实现?例如。
tcmalloc? -
'堆内存分配作为栈上的方式'你是什么意思?
-
您能否解释一下为什么确切地您认为
malloc可能无法胜任这项任务? -
malloc可以胜任这项任务。但是,它(通常)在分配时会锁定堆;在我的情况下,它在分配和释放方面具有不必要的灵活性(通常具有更多的运行时开销),这两者都可以出于性能原因进行优化。
标签: c memory-management heap-memory stack-memory