rwb*_*rwb 9 c++ memory stl allocation vector
我正在为应用程序创建一个插件,其中应该由应用程序分配内存并跟踪它.因此,应该以缓冲区的形式从宿主应用程序获取内存句柄,然后将它们返回给应用程序.现在,我正计划使用STL Vectors,我想知道它在内部使用什么样的内存分配.
它是否在内部使用"新"和"删除"功能?如果是这样,我可以用自己的函数重载'new'和'delete'吗?或者我应该创建自己的模板分配器,这对我来说看起来很困难,因为我没有创建自定义模板的经验.
欢迎任何建议/示例代码.可以从这样的应用程序中获取内存句柄
void* bufferH = NULL;
bufferH = MemReg()->New_Mem_Handle(size_of_buffer);
MemReg()->Dispose_Mem_Handle(bufferH); //Dispose it
Run Code Online (Sandbox Code Playgroud)
Ste*_*sop 18
vectorstd::allocator默认使用,并且std::allocator需要使用全局运算符new(即::operator new(size_t))来获取内存(20.4.1.1).但是,每次调用时都不需要调用它一次allocator::allocate.
所以,是的,如果你替换全局operator new,那么vector将使用它,虽然不一定真正允许你的实现"高效"地管理内存.原则上,你想要使用的任何特殊技巧都可以通过std::allocator以10MB块和子分配方式获取内存来完全无关.
如果您有一个特定的实现,您可以查看它的vector行为方式,如果您的计划分配策略本质上是特定于平台的,那么这可能就足够了.