社区
C++ 语言
帖子详情
STL 中deque的内存分配和释放
sin816
2009-03-31 11:42:51
由于需要动态保存很多信息,担心deque如果是连续分配内存的话可能出现内存不足?
另外pop_back()后末尾结点的内存是否就会释放掉?
...全文
741
14
打赏
收藏
STL 中deque的内存分配和释放
由于需要动态保存很多信息,担心deque如果是连续分配内存的话可能出现内存不足? 另外pop_back()后末尾结点的内存是否就会释放掉?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bfhtian
2009-04-01
打赏
举报
回复
[Quote=引用楼主 sin816 的帖子:]
由于需要动态保存很多信息,担心deque如果是连续分配内存的话可能出现内存不足?
另外pop_back()后末尾结点的内存是否就会释放掉?
[/Quote]
一般来说,是不会出现这样的问题的
iambic
2009-04-01
打赏
举报
回复
放心用吧。
beyond071
2009-04-01
打赏
举报
回复
继续学习!
sendto66
2009-04-01
打赏
举报
回复
帮顶
mengde007
2009-04-01
打赏
举报
回复
deque是动态增长的,不用担心不够用,pop_back()后内存依然存在,
hndth
2009-04-01
打赏
举报
回复
帮顶
acdbxzyw
2009-04-01
打赏
举报
回复
没研究过,前来学习。
herman~~
2009-04-01
打赏
举报
回复
放心用吧
既然用了stl容器,你不必太去担心这些,如果真把内存支撑爆了,估计你的业务逻辑有问题
Paradin
2009-04-01
打赏
举报
回复
[Quote=引用 12 楼 lclhurricane 的回复:]
deque的一块块的连续空间组合而成的,所以你不用担心它会像vector那样空间不足时重新开辟一块比原有空间更大的内存,然后全部复制过去,再释放掉旧的内存。
deque只需增加一小块内存就可以。
[/Quote]
s
lclhurricane
2009-04-01
打赏
举报
回复
deque的一块块的连续空间组合而成的,所以你不用担心它会像vector那样空间不足时重新开辟一块比原有空间更大的内存,然后全部复制过去,再释放掉旧的内存。
deque只需增加一小块内存就可以。
weixiaoshashou
2009-04-01
打赏
举报
回复
动态的啊,不用担心哦
xuedaoli
2009-04-01
打赏
举报
回复
你可以去看下deque的内部如何设计的。
当不够的时候是如何再去分配内存的。
聪仔
2009-04-01
打赏
举报
回复
deque没有试过,vector倒是知道,pop_back后会把vector的内存占用释放掉,但不是释放还给系统,而是把内存交给了STL库管理,要真正把内存释放掉并还给操作系统必须调用~vector().至于deque因为很少用到,没有试过所以不清楚是不是也和vector一样
RickzdWen
2009-04-01
打赏
举报
回复
这个好像不需要担心吧,deque的内存是一块一块分配的,每次超出边界时会分配一个新的block
pop_back()后感觉不会释放掉内存
C++
STL
STL
实战开发精讲视频
《C++ 模板技术与
STL
实战开发》主讲:丁宋涛 泛型编程(Generic Programming)是一种全新的程序设计思想,它和
STL
是现代C++的精髓。可以说,不会
STL
很难称得上掌握了现代C++编程。
STL
是一个高效的C++程序库,它被容纳于C++标准程序库(C++ Standard Library)
中
,该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。
【C++
STL
学习之三】容器
deque
深入学习
C++
STL
容器
deque
和vector很类似,也是采用动态数组来管理元素。 使用
deque
之前需包含头文件: #include 它是定义在命名空间std内的一个class template: template class _Ax = allocator > class
deque
; 第一个template参数用来表示元素型别,第二个可有可无,指定内存模型。一般使
STL
之
deque
实现详解
何为
deque
deque
是双向开口的连续线性空间(动态将多个连续空间通过指针数组接合在一起),随时可以增加一段新的空间,所以数据想vector里面的分配,复制,
释放
操作不会发生。
deque
头尾两端分别做插入和删除操作都是常数时间。能用vector尽量使用vector,通过
deque
用来做队列即可,十分方便的。 不浮躁,慢慢看,就会理解其
中
的奥妙。 花了半天的时间仔细看了一遍SGI-
STL
d...
STL
之
deque
源码剖析
在介绍
STL
的
deque
的容器之前,我们先来总结一下vector和list的优缺点。vector在内存
中
是分配一段连续的内存空间进行存储,其迭代器采用原生指针即可,因此其支持随机访问和存储,支持下标操作符,节省空间。但是其在分配的内存不够的情况下,需要对容器整体进行重新分配、拷贝和
释放
等操作,而且在vector
中
间插入或删除元素效率很低。 而list是以节点形式来存放数据,使用的是非连续的内
c++
STL
容器的
内存分配
一.前言在使用
STL
各类容器的时候,有时会出现迭代器失效,引用(指针)失效等情况的而发生,即使看似你的操作都是合法的情况下。要了解问题的原因,我们就要了解C++
中
stl
容器的
内存分配
策略。我们才知道在哪些操作下可能导致迭代器失效,引用(指针)失效。二.问题分类首先我们把以上的问题分成两类: 容器的迭代器为什么会失效? 容器元素的引用(指针)为什么会失效? 因为从内存角度上来讲,如果引用是失效了那么指
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章