找回密码
 点一下
查看: 2261|回复: 13

[提问]函数的句柄型传入值需要置null么?

[复制链接]
发表于 2007-3-1 12:26:11 | 显示全部楼层 |阅读模式
例如

function helloworld takes player whichPlayer returns nothing

这样的函数

其中的whichPlayer不置null会造成泄漏么?
发表于 2007-3-1 13:44:13 | 显示全部楼层
嗯。关于这个问题。本人的理解为:
Createxxxxx这类函数。
返回值是一个新的Handler。
都需要消除。
嗯嗯。
其实最完全的是:
有Removexxxx或者Destroyxxxx这类函数的数据,都需要手动调用。来清除占用的资源。
当然啦。其实里面有一些是不需要手动的啦。比如死掉的单位之类的。
不过如果不能确定。都调用当然是最好的了。

http://ga.wowar.com/wiki/index.php/Category:%E5%87%BD%E6%95%B0
回复

使用道具 举报

 楼主| 发表于 2007-3-1 13:48:53 | 显示全部楼层
恩,我的表达不够清楚

我的意思是

function helloworld takes player whichPlayer returns nothing

    set whichPlayer = null

endfunction

其中的 set whichPlayer = null 是有必要的么?
回复

使用道具 举报

发表于 2007-3-1 16:06:43 | 显示全部楼层
没必要
如果是全局变量的话就有必要鸟
回复

使用道具 举报

 楼主| 发表于 2007-3-1 20:26:42 | 显示全部楼层
楼上说的是local吧?
回复

使用道具 举报

发表于 2007-3-1 21:50:51 | 显示全部楼层
1 函数参数不需要set null
2 全局变量不需要set null
3 只有可创建对象的handle类需要set null
回复

使用道具 举报

 楼主| 发表于 2007-3-2 09:06:05 | 显示全部楼层
明白了~谢谢:]
回复

使用道具 举报

发表于 2007-3-2 11:23:30 | 显示全部楼层
引用第5楼Red_Wolf2007-03-01 21:50发表的:
1 函数参数不需要set null
2 全局变量不需要set null
3 只有可创建对象的handle类需要set null
句柄型全局变量在对象释放后,是有必要设置null的。否则再次使用那个全局变量做参数时可能导致war3.exe的崩溃。
当然在globals-endglobals中间是否需要设置null,没有测试过。
回复

使用道具 举报

发表于 2007-3-2 11:56:28 | 显示全部楼层
引用第7楼hackwaly2007-03-02 11:23发表的:

句柄型全局变量在对象释放后,是有必要设置null的。否则再次使用那个全局变量做参数时可能导致war3.exe的崩溃。
当然在globals-endglobals中间是否需要设置null,没有测试过。



BJ那么多的Last'X变量,你见谁set null过?会出什么问题呢?
回复

使用道具 举报

发表于 2007-3-2 12:39:52 | 显示全部楼层
变量具体是否必须要set null,当然是分具体情况的。BJ的lastx变量保证了任何时候都是指向的有效对象,当然不需要set null。
我不想争论这个话题,实在毫无意义。我所说全局变量有set null的必要,并不是说必须设置为null,只是set null会避免出现使用空悬句柄的问题。做地图当然要避免这些问题,所以我才说有必要,如果LZ能区分哪些变量需要,哪些不需要,我的话就当没说好了。
另外red wolf的那个技能系统能不能放出来啊,好期待啊。
回复

使用道具 举报

发表于 2007-3-2 13:51:21 | 显示全部楼层
什么技能系统?
回复

使用道具 举报

 楼主| 发表于 2007-3-2 19:42:21 | 显示全部楼层
引用第9楼hackwaly2007-03-02 12:39发表的:
变量具体是否必须要set null,当然是分具体情况的。BJ的lastx变量保证了任何时候都是指向的有效对象,当然不需要set null。
我不想争论这个话题,实在毫无意义。我所说全局变量有set null的必要,并不是说必须设置为null,只是set null会避免出现使用空悬句柄的问题。做地图当然要避免这些问题,所以我才说有必要,如果LZ能区分哪些变量需要,哪些不需要,我的话就当没说好了。
另外red wolf的那个技能系统能不能放出来啊,好期待啊。

恩哼……这个倒真要小心了,以前没注意过这个问题……

幸好目前还都只用全局的integer做参数(只用来传递数组索引-,-!)
回复

使用道具 举报

发表于 2007-3-2 21:47:07 | 显示全部楼层
对于handle值可回收的变量~~不set null还有可能导致指向错误~~比如原本指向的对象被Destroy~~handle值被后续创建的对象给占有~~触发器对象比较容易出现这种错误~~

是否set null对防止内存泄露并无多少帮助~~但是这确实是一种良好的习惯~~
回复

使用道具 举报

发表于 2007-3-15 18:10:42 | 显示全部楼层
觉得这帖子名字有很大的问题
直接写个"函数的参数是否需要释放?"不就得了!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 21:45 , Processed in 0.070922 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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