关于C++中内存池的查询
An inquiry on memory pools in C++
是否可以创建一个遵循简单逻辑的内存池实现:
1-分配n字节的内存池。
2-使用修改后的new();不分配内存的函数/运算符只获取一个指向内存池开头的指针。通过这种方式,可以在没有开销的情况下动态创建对象。
3-当内存池电量不足时,它会释放剩余的内存,并分配一个新的内存池
4-在第一个内存池中创建的对象将根据其大小来提取内存。在第一个池中分配的内容和在池电量不足时返回的内容之间的差异由对象在删除时恢复。
我担心的主要是,我不知道如何删除比分配的内存池小的内存池,记住,除了内存池对象末尾剩下的内容外,还有一个内存池的操作系统头,它位于池中分配的第一个对象之前。我需要什么方法来确保没有内存泄漏,删除多余的内存池不会删除其中分配的对象,并且安全地删除内存池片段的头。
谢谢!
编辑:请注意,目的是由内存池分配内存,并由对象释放内存,这些对象可能具有不同的生存期。如果这是可能的。。。
首先,如果您想知道应该搜索什么,这听起来像是一个竞技场分配器(如注释中所述)。
请注意,只有当你计划一次拆除整个东西时,竞技场才真正有用;如果您希望从已删除的对象中回收内存以供重用,那么您最终会在竞技场的顶部编写自己的堆。如果你只想保持arena区块的活力,直到最后一个对象被释放,你可以用refcount来管理。
其次,我所知道的分配内存的唯一常见方法是使用内存映射:这是特定于平台的。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将字符串存储在c++中的稳定内存中
- 查询SQLite数据库中的日期
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Python 中打开 Maya callBacks 或C++查询内存中的所有回调
- 查询内存位置
- 查询从内存映射文件检索到的Rtree时出现分段错误
- 关于C++中内存池的查询
- 具有发布、订阅和查询筛选器的内存数据库