博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL内存分配方式
阅读量:4546 次
发布时间:2019-06-08

本文共 556 字,大约阅读时间需要 1 分钟。

  关于STL用的很多比如map, vector, set, queue, stack等等。很少关注它的内存分配情况,但是经常遇到比如使用map,不停的在map中插入了一些很小的对象,然后释放了一些,然后想要再申请的时候出现了OutOfMemory的错误;

这是由于内存碎片化导致的。

  STL分配内存的工具是allocator, 根据c++标准把对象的申请分为了4步:

  第一步,申请内存空间,对应的函数式alloctor::allocate()

  第二步,执行构造函数,对应的函数式alloctor::construct()

  第三步,执行析构函数,对应的函数式alloctor::destory()

  第四步,释放内存空间,对应的函数式alloctor::deallocate()

  我们可以指定要使用的allocator :

  map<int, int, less<int>, std::allocator<pair<int, int>>>mp;

  map<int, int, less<int>, __gnu_cxx::new_allocator<pair<int, int>>>mp;

 

转载于:https://www.cnblogs.com/luntai/p/6472075.html

你可能感兴趣的文章
BeanShell PreProcessor数据base64加密
查看>>
10条建议帮助你创建更好的jQuery插件
查看>>
setPreferredSize和setSize的区别及用法
查看>>
Python简介及编码
查看>>
[转]Android:Layout_weight的深刻理解
查看>>
监听键盘弹出 隐藏
查看>>
iOS开发 - NSBundle, NSDevice, NSLocale
查看>>
innerHtml安全问题
查看>>
UVA 11992,。。。伪-二维线段树
查看>>
[原创]通过函数指针实现事件消息处理
查看>>
IE下JS保存图片
查看>>
293.Flip Game
查看>>
uvaLive5713 次小生成树
查看>>
mysql原生语句基础知识
查看>>
Ubuntu11搭建QT开发环境
查看>>
深度学习样本不均衡问题解决
查看>>
Servlet中Web.xml的配置详解
查看>>
RabbitMQ headers Exchange
查看>>
硬件产品测试
查看>>
nmon for linux
查看>>