游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1656|回复: 2

DDRAW 的页面怎样释放?

[复制链接]

9

主题

50

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2007-11-7 22:30:00 | 显示全部楼层 |阅读模式
比如游戏进入了一个战斗模式,创建了几个页面并载入位图,在战斗模式结束后希望释放掉页面占用的内存,应该怎样做?
我用了SAFE_RELEASE( )这个宏,但打开任务管理器时并不见占用的内存被释放.
再次进入战斗模式时页面必须从新创建,还是只用再次载入数据到页面即可?

22

主题

144

帖子

193

积分

注册会员

Rank: 2

积分
193
发表于 2007-11-8 15:54:00 | 显示全部楼层

Re:DDRAW 的页面怎样释放?

如果你学了OS的原理的时候,你就知道了,当你在程序一开始的时候分配内存(1M),任务管理器中间显示的是5M
那么一会儿你free、delete它的时候,肯定还是5M,只有当你又运行了一个比较消耗内存的程序后,有可能变成4M。

这是叫做页面回收的知识,garbage collection,理论知识老复杂了。一是讲不清楚:)

用了SAFE_RELEASE宏的指针都是NULL,怎么可能还能使用?!

#define SAFE_RELEASE(p) if(p){p->Release();p=NULL;}

还有在分配表面的时候DDSURFACE,有一个标志是建立在内存里还是在显存里,如果是在显存里,任务管理器就更不可能有反映了。

9

主题

50

帖子

161

积分

注册会员

Rank: 2

积分
161
 楼主| 发表于 2007-11-11 11:48:00 | 显示全部楼层

Re:DDRAW 的页面怎样释放?

谢谢楼上了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-19 03:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表