【发布时间】:2011-05-08 18:16:17
【问题描述】:
我正在为应用程序开发一个插件,其中的内存应该由应用程序分配并跟踪它。因此,应该以缓冲区的形式从主机应用程序获取内存句柄,然后将它们返回给应用程序。现在,我正计划使用 STL Vectors,我想知道它在内部使用了什么样的内存分配。
它是否在内部使用“新”和“删除”功能?如果是这样,我可以用自己的函数重载“新”和“删除”吗?或者我应该创建自己的模板分配器,这对我来说似乎是一项艰巨的工作,因为我在创建自定义模板方面没有那么丰富的经验。
欢迎任何建议/示例代码。可以像这样从应用程序中获取内存句柄
void* bufferH = NULL;
bufferH = MemReg()->New_Mem_Handle(size_of_buffer);
MemReg()->Dispose_Mem_Handle(bufferH); //Dispose it
【问题讨论】:
-
要创建自己的分配器,请参阅 Matt Austern 的经典作品:drdobbs.com/184403759
-
@sbi:我还没有读过,但记得分配器语义在 C++11 中发生了显着变化。你确定经典在今天仍然适用吗? (这不是一个修辞问题,而是一个真实的问题。)
-
@einpoklum 这是 6 年前的评论。我们有两个新的标准版本,另一个即将推出。当然,从那以后情况可能会发生变化。
标签: c++ memory stl vector allocation