STL 中deque的内存分配和释放

sin816 2009-03-31 11:42:51
由于需要动态保存很多信息,担心deque如果是连续分配内存的话可能出现内存不足?
另外pop_back()后末尾结点的内存是否就会释放掉?
...全文
741 14 打赏 收藏 转发到动态 举报
写回复
用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()后感觉不会释放掉内存

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧