【发布时间】:2017-06-02 08:20:32
【问题描述】:
我最近提出了在 C++ 程序中使用静态初始化数组(即“静态字节内存 [大小]”)来池化内存的想法。分配内存块的过程类似于预先为池调用 malloc。然后我构建了这个分配器,似乎没有问题。除了有限的内存空间之外,这种分配器架构还有其他问题吗?
注意:我保留内存块的方法是创建一个存储大小、指针和邻居的块的链表。并不是说它对这个问题很重要。
【问题讨论】:
-
请问为什么你做了这样的事情?默认分配器有什么问题?你打算用它做什么?它应该解决什么问题?
-
@Someprogrammerdude 人们构建自定义 allcoators、簿记、内存池等的原因之一。至于这个问题,我只是好奇。
-
所以你动态分配一堆静态数组,然后将这些数组用作分配器的存储空间?还是我误解了?因为它看起来很傻。
-
我认为创建分配器没有任何问题。事实上,在我的领域中,由于性能和安全关键认证,我们经常使用它。但是请确保不要使用 std::list 进行块管理,因为 STL 会大量使用动态内存(您将失去自定义分配器的所有好处)。
-
“为什么”并不重要,我只是好奇。至于问题本身,我认为设计没有任何问题。但是,如果您想更多地输入设计本身而不是实际代码,那么我建议您改为在softwareengineering.stackexchange.com 上发帖。如果你想输入(工作)代码,那么codereview.stackexchange.com。
标签: c++ memory-management allocation