如下这种情况要不要处理内存碎片??

weiwuyuan 2012-01-03 04:24:41
以一个游戏程序为例:
游戏在运行中需要频繁的播放动画,其中会涉及到大量的内存分配需求.
(有些动画很大,比如有的是640×480的,共有88帧)

下面是加载一张图片的步骤:
1:从精灵封包中读取指定精灵(一个包含文件头、bmp的数据),这需要一段内存
2:从读出的精灵数据中,解压出bmp数据,这又需要一段内存

如果上面这2个内存需求都简单的malloc/free,会造成内存碎片么?
不知道现在的操作系统是否会对这种内存分配做优化处理??
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
giant1st 2012-01-03
  • 打赏
  • 举报
回复
内存碎片取决于 你使用的内存的大小的顺序。

如果你每次申请内存的大小,都比前一次释放的内存大小要小,那么就申请就总能成功。

BMP数据已经在你读取的精灵变量中,为什么还要再次需要内存来解压,难道是第一次读取的压缩的BMP数据?

内存碎片参考: http://www.eetop.cn/blog/html/11/317611-14192.html
proorck6 2012-01-03
  • 打赏
  • 举报
回复
让windows去管理内存吧,我们休息一下。
weiwuyuan 2012-01-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
你等到出了内存碎片后再来问吧。
我都怀疑有几个人真遇过内存碎片。
[/Quote]

如果要处理内存碎片,那就得将内存的分配和释放做成一个接口了,这问题就大了,因为要自己写一个内存管理器……
qq120848369 2012-01-03
  • 打赏
  • 举报
回复
楼主大可不必担心, 正如taodm所说, 有几个人能遇见碎片?

Lighttpd就没内存池, 照样跑的嗖嗖的.
taodm 2012-01-03
  • 打赏
  • 举报
回复
你等到出了内存碎片后再来问吧。
我都怀疑有几个人真遇过内存碎片。

64,676

社区成员

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

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