相关疑难解决方法(0)

boost.pool如何实现分配内存的重用?

背景

先前的问题有关boost.pool促使我详细调查boost.pool,现在我有一个补充问题,最后确定我的理解.

序幕

此参考说明了有关对象池模式的以下内容:

对象池模式是一种软件创建设计模式,它使用一组准备好使用的初始化对象,而不是按需分配和销毁它们.

据我所知,boost.pool(简化)通过内存分配和管理实现对象池模式,主要基于a的大小element_type,并返回一个指向已分配对象的简单指针:

element_type * malloc();
void free(element_type * p);
Run Code Online (Sandbox Code Playgroud)

一个简单的提升示例还表明,没有必要明确free获取的元素:

X * const t = p.malloc();
... // Do something with t; don't take the time to free() it.
Run Code Online (Sandbox Code Playgroud)

我知道在破坏池对象时可以安全地释放分配的内存,但是池如何知道客户端获取的内存块何时被释放回池中并且如果其接口提交直接指针则可以重用到element_type,但free()仍然不需要打电话?也就是说,如果无法确定内存是否仍在使用中,那么增强池如何重新使用此内存?如果它不重用这个内存,这甚至被认为是与wiki引用解释的模式相同的模式?

c++ boost-pool

5
推荐指数
2
解决办法
7189
查看次数

标签 统计

boost-pool ×1

c++ ×1