找回密码
 点一下
查看: 1695|回复: 3

请教一个有关real泄露的问题

[复制链接]
发表于 2009-12-9 21:31:39 | 显示全部楼层 |阅读模式
我们习惯把指针类的变量在使用完后设置为NULL
比如
function tragedy takes nothing returns nothing
                  local unit tragedy = GetTriggerUnit()
                  local real PX = GetUnitX(tragedy)
                  set tragedy = null
endfunction
的空函数,如果这样写的话PX这个real是否会造成泄露呢?tragedy这个单位被赋值NULL了以后还会泄露吗?(我用了好久JASS了,反正知道最后HANDLE设置成NULL是必须的)设想这个函数发生在大范围单位进行圆周运动的TIMER里,如果PX这个真值会造成泄露,0。01秒产生7个真值变量,持续15秒!那太可怕了。不造成泄露到好,如果有的话,有什么办法解决吗?我为这问题纠结了好久。。。。。还有integer呢?

看似普通,但是如果是我上述的情况,泄露量可真是让人心跳。
发表于 2009-12-9 22:14:25 | 显示全部楼层
引用楼主tragedy于2009-12-09 21:31发表的 请教一个有关real泄露的问题 :
我们习惯把指针类的变量在使用完后设置为NULL
比如
function tragedy takes nothing returns nothing
                  local unit tragedy = GetTriggerUnit()
                  local real PX = GetUnitX(tragedy)
.......
1、泄露的主要方面是handle的实体,例如unit的单位本身
2、set null的作用是释放handle型变量占用handle表中的量,大约几个字节而已,只是特别大的数量是会影响读取handle表的速度的
3、除了handle类的需要排泄,其他类型中code需要set null,因为也占用handle,String根本没法排泄,其他的布尔值、integer和real都不用管
4、你排泄的首要对象是handle的实体,比如需要RemoveLocation等,至于set null 如果不是大量的话,无视都可以,只是作为一个好习惯,最好是set null
5、set null会导致一个bug,不过现在的版本是否还有我没测试过。
回复

使用道具 举报

 楼主| 发表于 2009-12-10 17:57:34 | 显示全部楼层
原来如此,那就是说除了实体的HANDLE以外其他的都是无关紧要啦!那么可以放心用了
回复

使用道具 举报

发表于 2009-12-10 18:18:38 | 显示全部楼层
引用第2楼tragedy于2009-12-10 17:57发表的  :
原来如此,那就是说除了实体的HANDLE以外其他的都是无关紧要啦!那么可以放心用了
如果你大量使用handle……
set null还是有利于游戏效率的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 19:22 , Processed in 0.035814 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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