War3 脚本对象句柄管理

前言

        War3设计的时候可能没有想到如今的RPG地图的火爆,作为一款RTS游戏来说当初的设计也不会考虑到地图上单位过多的问题(游戏机制有人口限制)。因为在脚本引擎对句柄回收机制这块并没有那么先进(自动回收机制),只是做了个大概,更多需要开发者自己手动去回收,这里就来看看脚本里对于内存回收的逻辑。

环境

Game.dll:126

数据和代码

       一直以来很多大型RPG地图在时长超过30分钟后都会有几率产生一个内存不足的崩溃,网上流传的解决办法是改成OPENGL模式,这个只是个治标不治本的方法,因为OPENGL在内存消耗上比D3D小,所以只能多维持一会而已,最终还是会导致内存不足的崩溃。在游戏里一个句柄就代表了一块内存,脚本里创建的句柄没有被正确的释放就会导致的内存泄漏,这才是最根本的原因。

相关汇编代码:

0286CB50    6A FF           push -1                                    申请句柄
0286CB52    68 71B3C602     push Game.02C6B371
0286CB57    64:A1 00000000  mov eax,dword ptr fs:[0]
0286CB5D    50              push eax
0286CB5E    83EC 08         sub esp,8
0286CB61    56              push esi
0286CB62    57              push edi
0286CB63    A1 40E1EE02     mov eax,dword ptr ds:[2EEE140]
0286CB68  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值