【发布时间】:2010-10-24 13:14:15
【问题描述】:
我的应用程序主要是按层组织的,所以我发现像APR memory pools 这样的东西是最好的方法。
在阅读关于 C++ placement new 帖子 here 和 here 和 a more generic C allocation question 的 SO 时,我正在考虑按照一篇帖子中的建议手工制作分层池分配器,但在纯 NYI 传统中 我首先要问这样的东西是否已经存在。
它还可以具有能够将未使用的内存归还给操作系统的良好属性(因为分配可以使用mmap(MAP_ANON) 完成)或者可以是allocating from the stack,如建议的Ferrucico here。
【问题讨论】:
-
让我们回问一些事情。内存分配是否是您的应用程序中已通过分析证明的瓶颈?如果没有,为什么还要使用自定义分配器?
-
分层内存池也有助于确保正确性,因为您可以消除一种内存泄漏源。
-
@florin 如果您正确使用 c++(容器、raii、...),发生泄漏的可能性非常低。我什至不记得我何时必须追踪最后一次泄漏。这是很久以前的事了。
-
他们无助于“正确性”,他们在不正确的代码上使用了创可贴。
-
其实这个应用是为了临时分配十几兆,然后再释放。因此,由于我不想在两次使用之间保持未使用状态,因此我首先想到了“手动”映射一些内存。但是在这里和那里读了一点之后,我认为拥有一个好的 API 会非常好,并促进这种使用模式的重用。这并不是要替换 整个 分配(RAII 非常适合一般用途)
标签: c++ memory-management hierarchical