c – 默认情况下,STL向量使用“new”和“delete”作为内存分配?

c – 默认情况下,STL向量使用“new”和“delete”作为内存分配?,第1张

概述我正在为一个应用程序的插件工作,应用程序应该分配内存并跟踪它.因此,应该以缓冲区的形式从主机应用程序获取内存句柄,然后再将其提交给应用程序.现在,我正在计划使用STL Vectors,我想知道内部使用什么样的内存分配. 它在内部使用“新”和“删除”功能?如果是这样,我可以用我自己的功能来重载“新”和“删除”吗?或者我应该创建自己的模板分配器,这对我来说看起来像一个困难的工作,因为我没有经验的创建自 我正在为一个应用程序的插件工作,应用程序应该分配内存并跟踪它.因此,应该以缓冲区的形式从主机应用程序获取内存句柄,然后再将其提交给应用程序.现在,我正在计划使用STL Vectors,我想知道内部使用什么样的内存分配.

它在内部使用“新”和“删除”功能?如果是这样,我可以用我自己的功能来重载“新”和“删除”吗?或者我应该创建自己的模板分配器,这对我来说看起来像一个困难的工作,因为我没有经验的创建自定义模板.

欢迎任何建议/示例代码.可以从这样的应用程序获取内存句柄

voID* bufferH = NulL;bufferH = MemReg()->New_Mem_Handle(size_of_buffer);MemReg()->dispose_Mem_Handle(bufferH); //dispose it
解决方法 vector默认使用std :: allocator,并且需要使用std :: allocator来使用全局运算符new(即:: operator new(size_t))来获取内存(20.4.1.1).但是,每次调用allocator :: allocate时,不需要调用它一次.

所以是的,如果你替换全局运算符new,那么矢量将会使用它,尽管不一定能够让你的实现“有效”地管理内存.你想要使用的任何特殊技巧原则上可以完全与std :: allocator完全无关,以10MB的块和子分配方式抓取内存.

如果你有一个特定的实现,你可以看看它的向量行为,如果你的计划的分配策略本身就是平台特定的,那可能是足够好的.

总结

以上是内存溢出为你收集整理的c – 默认情况下,STL向量使用“new”和“delete”作为内存分配?全部内容,希望文章能够帮你解决c – 默认情况下,STL向量使用“new”和“delete”作为内存分配?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1247356.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存