【发布时间】:2020-06-15 06:03:56
【问题描述】:
我正在尝试设计一个简单的嵌入式应用程序的内部机制。数据块到达网络,需要传送到由寻址机制确定的组件。多个组件可以订阅同一个地址。我想设计一个架构,其中传入的块被封装到从内存池分配的包装器对象中。只要需要,每个组件都可以保留包装器(以及其中的数据),并且在所有组件释放它时应该将其释放。那时它会返回到池中并再次准备好分配。池耗尽不是问题。
我打算使用满足分配器的this内存池实现。对于包装器对象的自动销毁,我计划使用std::shared_ptr,所以当所有组件释放包装器时,它会自动销毁并将使用的内存返回到池中。
我没有看到这两个概念如何结合在一起。如果我直接从池中分配内存(通过调用allocate()),它会给我一个指向数据块的指针,这很好,但是如何自动调用deallocate()?或者我是否需要为我的包装对象使用另一个容器,例如std::list,并将其传递给内存池分配器?
【问题讨论】:
标签: c++ c++11 memory-management smart-pointers memory-pool