找回密码
 点一下
查看: 921|回复: 10

用过的Timer可以再用吗?

[复制链接]
发表于 2009-8-16 09:38:20 | 显示全部楼层 |阅读模式
  单位到期之后会死亡,声音则不会,那么Timer属于那种类型?
Timer执行完之后应该手动删除呢,还是不用管它?
或者反过来,用过一次的Timer可以再用,还是必须重新建立一个?
发表于 2009-8-16 09:49:02 | 显示全部楼层
timer到期只是到期,你可以重复使用
回复

使用道具 举报

 楼主| 发表于 2009-8-16 10:27:07 | 显示全部楼层
噢,那一次性的还是用DestroyTimer吧。

对了,假如创建了一个点,然后让一个变量指向它,紧接着又让那个变量指向另一个点,这样不会造成泄漏吧?
回复

使用道具 举报

发表于 2009-8-16 11:09:38 | 显示全部楼层
很不幸
会泄露
回复

使用道具 举报

 楼主| 发表于 2009-8-16 11:24:25 | 显示全部楼层
引用第3楼evenxn007于2009-08-16 11:09发表的 :
很不幸
会泄露

我记得没有变量指向的区域会被释放掉的,那样的话一开始创建的点应该会被释放掉才对。
回复

使用道具 举报

发表于 2009-8-16 11:30:19 | 显示全部楼层
jass根本垃圾回收机制,所以说这个是不会自动释放掉的,都需要手动去做的吧

handle内存释放的条件是没有引用且handle内容为空,这里handle不为空,也就释放不了了
回复

使用道具 举报

 楼主| 发表于 2009-8-16 11:35:17 | 显示全部楼层
哦……
那这样行不行?
set udg_P=[新创建的点];
set udg_P=null.
回复

使用道具 举报

发表于 2009-8-16 11:43:12 | 显示全部楼层
应该是call RemoveLocation(udg_P)清除点而不是set null…建议去学jass
回复

使用道具 举报

发表于 2009-8-16 12:42:19 | 显示全部楼层
6楼仍然只做了清除引用,而没有做清除handle内容

全局变量对set null没有太大的必要性,因为会反复赋值
回复

使用道具 举报

发表于 2009-8-16 14:35:44 | 显示全部楼层
SET NULL 只会使变量 为NULL而已 在JASS局部变量中 可以避免局部变量不回收
JASS 需要主动调用销毁HANDLE的方法 基本上所有的HANDLE都有对应的销毁 或者 移除方法
另外即使是有"垃圾回收机制"的编程语言 单单SET NULL 还是不够的 比如事件监听器 监听着某个单位
这个单位也是不被认为是可回收的 不知道暴雪 对这个 监听器 和 HANLDE之间 是否有处理
回复

使用道具 举报

 楼主| 发表于 2009-8-16 15:03:34 | 显示全部楼层
哦,我明白了,谢谢你们。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-22 02:23 , Processed in 0.067002 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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