Сейчас 16:35:59 Понедельник, 20 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Удаление некоторых утечек (Таймер, юнит, точка, группа-юнитов, эффект)
[Вопрос] Удаление некоторых утечек
FatalBladeДата: Пятница, 23 Сентября 2011, 22:33:56 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Конечно же немного глупые вопросы, но я сомневаюсь что многие знают на них точные ответы:
1) - Как удаляется локальный таймер? Сначала надо call DestroyTimer(t) а потом set t=null, или наоборот, или хватает только call DestroyTimer(t)?

2) - Как удаляется юнит? Надо сначала call RemoveUnit(unit) а потом set unit=null, или наоборот? И если unit это всего лишь временный указатель на юнита, то хватает set unit=null, не? Не надо же потом писать call RemoveUnit(unit)?

3) - Что бы удалить точку, хватает call RemoveLocation(p), или потом надо написать set p=null?

4) - Что бы окончательно удалить группу, надо сначала удалить из неё всех юнитов с помощью call GroupRemoveUnit(g, u)? Или этого делать не обязательно?... Дальше, call DestroyGroup(g), а потом set g=null? Или наоборот, или обнулять не обязательно

5) - Хватает ли call DestroyEffect(e), чтобы избавиться от самой страшной утечки в джассе, или же потом надо переменную обнулить - set e=null


 

[DUОS]Дата: Пятница, 23 Сентября 2011, 22:49:38 | Сообщение # 2
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (FatalBlade)
Как удаляется локальный таймер? Сначала надо call DestroyTimer(t) а потом set t=null, или наоборот, или хватает только call DestroyTimer(t)?

В зависимости от того, какой таймер. DestroyTimer(t) и set t = null достаточно для одноразового таймера. Для периодического таймера надо ещё и PauseTimer(t).
Quote (FatalBlade)
Как удаляется юнит? Надо сначала call RemoveUnit(unit) а потом set unit=null, или наоборот? И если unit это всего лишь временный указатель на юнита, то хватает set unit=null, не? Не надо же потом писать call RemoveUnit(unit)?

Если ты хочешь вообще избавиться от юнита, то надо сделать RemoveUnit. А обнулять надо всегда.
Quote (FatalBlade)
Что бы удалить точку, хватает call RemoveLocation(p), или потом надо написать set p=null?

RemoveLocation тоже надо.
Quote (FatalBlade)
Что бы окончательно удалить группу, надо сначала удалить из неё всех юнитов с помощью call GroupRemoveUnit(g, u)? Или этого делать не обязательно?... Дальше, call DestroyGroup(g), а потом set g=null? Или наоборот, или обнулять не обязательно

GroupClear, DestroyGroup и обнуление.
Quote (FatalBlade)
Хватает ли call DestroyEffect(e), чтобы избавиться от самой страшной утечки в джассе, или же потом надо переменную обнулить - set e=null

Нужно и обнуление и уничтожение.
Почему нужно обнулять, читай тут.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

Ty3uKДата: Суббота, 24 Сентября 2011, 06:53:13 | Сообщение # 3
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Все это- объекты. Их надо обнулить, иначе будут висеть в памяти

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Суббота, 24 Сентября 2011, 09:13:11 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Короче, для всех Handle'ов сначала Remove/Destroy а потом обнуление. Типа сначала уничтожается обьект а потом ссыла на него. Так?

Quote (|DUОS|)
В зависимости от того, какой таймер. DestroyTimer(t) и set t = null достаточно для одноразового таймера. Для периодического таймера надо ещё и PauseTimer(t).

Зачем PauseTimer(t)? Типа остановить его? У меня уже есть триггер с периодическим локальным таймером, и я не делал PauseTimer(t), и всё работает как надо.
И даже если всё равно надо, значит сначала PauseTimer(t), потом DestroyTimer(t), потом t=null?


 

Ty3uKДата: Суббота, 24 Сентября 2011, 09:31:32 | Сообщение # 5
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Переодический таймер всегда надо паузить, это раз. Два- не юзай remove на хэндлы- ссылка остается все равно, юзай FlushChildHashtable()

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Суббота, 24 Сентября 2011, 11:35:20 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
FatalBlade, рассуждай логически. Если ты сначала обнулишь переменную, то в Destroy... пойдет значение null, а не то, что нужно было уничтожить.
Quote (FatalBlade)
сначала PauseTimer(t), потом DestroyTimer(t), потом t=null?
Да. Говорят, лучше сначала запаузить периодический таймер.
Ty3uK, не сбивай. Remove'ать надо, а ты сказал функцию для очищения хэш-таблицы.


 

Ty3uKДата: Суббота, 24 Сентября 2011, 12:08:29 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Так он про хэндл сказал- я и ответил, что ремув ячейки оставляет ссылку в памяти. Пускай тогда говорит яснее, а то хэндл- это из хэш таблицы :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Суббота, 24 Сентября 2011, 12:17:00 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Ок а ведь null, разве не является тоже каким то присвоением? Так же как 0 это тоже число

 

lawsonДата: Суббота, 24 Сентября 2011, 12:21:10 | Сообщение # 9
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Ок а ведь null, разве не является тоже каким то присвоением?

Да null это присвоение значения пусто.

Добавлено (24 Сентябрь 2011, 12:21:10)
---------------------------------------------
ХМм чета с вопросами fatalblade раздел гуи\жасс оживился.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Суббота, 24 Сентября 2011, 12:21:23
 

[DUОS]Дата: Суббота, 24 Сентября 2011, 12:34:04 | Сообщение # 10
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
с вопросами fatalblade раздел гуи\жасс оживился.

lawson,
Фаталка и нас оживил :)


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

FatalBladeДата: Суббота, 24 Сентября 2011, 12:35:07 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
ХМм чета с вопросами fatalblade раздел гуи\жасс оживился.

:D Это ещё не всё) Будут ещё))


 

[DUОS]Дата: Суббота, 24 Сентября 2011, 12:37:20 | Сообщение # 12
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (FatalBlade)
Будут ещё))

Окей)


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

Ty3uKДата: Суббота, 24 Сентября 2011, 12:38:54 | Сообщение # 13
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Норм, это даже начинает правится :D

Добавлено (24 Сентябрь 2011, 12:38:54)
---------------------------------------------
Омг... Телефон. Нравиться*


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Суббота, 24 Сентября 2011, 12:39:28 | Сообщение # 14
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
Омг... Телефон. Нравиться*

Нажимай кнопку ПРАВКА чтобы исправить предыдущий пост.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Суббота, 24 Сентября 2011, 12:39:36
 

Ty3uKДата: Суббота, 24 Сентября 2011, 12:41:05 | Сообщение # 15
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Пда шаблон укоза не позволяет это делать, а денежки жалко, чтобы лазить на полном оформлении

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

[DUОS]Дата: Суббота, 24 Сентября 2011, 12:43:46 | Сообщение # 16
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (Ty3uK)
Пда шаблон укоза не позволяет это делать

Здесь - нет.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

Ty3uKДата: Суббота, 24 Сентября 2011, 12:44:58 | Сообщение # 17
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Да, шаблон стандартный, поэтому такой функции нет :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Воскресенье, 25 Сентября 2011, 21:27:04 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (|DUОS|)
Фаталка и нас оживил

Так не умирайте же, отвечайте на все мои вопросы :)

Добавлено (25 Сентябрь 2011, 21:27:04)
---------------------------------------------
Если я триггерно убиваю юнита - call KillUnit(unit), он ведь потом сам удалится из памяти, не?


 

Ty3uKДата: Воскресенье, 25 Сентября 2011, 21:39:17 | Сообщение # 19
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Нет, ты же его убиваешь, а не удаляешь

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Воскресенье, 25 Сентября 2011, 21:43:19 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Но ведь когда юниты умирают (не триггерно), их же не надо потом триггерно удалять?

 

lawsonДата: Воскресенье, 25 Сентября 2011, 21:46:40 | Сообщение # 21
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Нет когда они умирают не тригерно, так как их не поймаешь если на них нет ссылки.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Воскресенье, 25 Сентября 2011, 21:48:44
 

SirNikolasДата: Понедельник, 26 Сентября 2011, 12:16:04 | Сообщение # 22
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
Если я триггерно убиваю юнита - call KillUnit(unit), - он ведь потом сам удалится из памяти, не?
Удалится, если на него не будет ссылаться ни одна переменная (ни локальная, ни глобальная). Вернее, удалится после разложения костей (посмотри время в константах).


 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Удаление некоторых утечек (Таймер, юнит, точка, группа-юнитов, эффект)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz