![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Триггер запускается без проверки условия
После того, как условие единожды возвращает положительный результат, проверка этого условия вообще прекращается и триггер запускается без неё. Не подскажете, в чём проблема? Текст триггера:
Код:
|
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
мазохист
рекомендую
Hate добавил:
Hate добавил:
|
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Hate, для этого триггера - возможно, но многие такие проверки будут происходить очень часто, и если утечку не убрать... ну ты понел. Тем более что такие проверки я просто копипастю с уже существующих, меняя только тип юнита.
|
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
какая утечка? вы наркоман? |
![]() |
#4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Киря
![]() ![]() offline
Опыт:
769Активность: |
Variecs, слишком много лишнего кода.
Hate правильно написал. Зачем инициализировать лишние переменные, если они используються единожды. Вызывай функции напрямую.
А почему бы сразу не использовать
Возможно проблема кроется именно в этих излишках. Почисти и проверь еще раз. |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
~Hate,
Код:
я чего-то не понимаю? Variecs добавил: Я прекрасно знаю, как можно писать короче, и с удовольствием так бы сделал, однако учитывая тот факт, что многие триггеры у меня будут вызываться по 20 раз в секунду, хвосты вроде неудаленных ссылок на юнитов могут сыграть со мной злую шутку. |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
у вас лишние переменные, утечки в моем коде нету, хоть об стенку разбейтесь, идите читайте статьи по jass |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Киря
![]() ![]() offline
Опыт:
769Активность: |
Variecs, забавно.)
Ты в правду считаешь, что
со временем вызовет утечку?
Безусловно, если ты инициализировал переменную типа unit, то по завершению работы с ней ты должен её обнулить. Но судя из твоих слов ты уже при инициализации типа
получаешь утечку.) |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
Выравнивайте руки об асфальт, хоть бы почитали про оптимизацию, удалятели всего подряд. |
![]() |
#9
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Читал и, по-видимому, упоролся. Не понимаю причины, почему утечки нет.
Variecs добавил: Насколько я понял, утечка возникает по причине того, что вызываемая функция сохраняет возвращаемый результат где-то в лесу, где впоследствии он не обнуляется. Чтобы утечка не возникала, надо возвращать результат в какую-то переменную, которую потом можно обнулить. Но сейчас у меня такое ощущение, что всё это относится к какой-то другой вселенной, а я упорот. Боюсь, ощущение правдиво. |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
почитайте еще раз, и еще раз, в общем читайте до тех пор пока не поймёте. |
![]() |
#11
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
а почему она должна быть? |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Hate,
Цитата:
Так я думал. Boy will i change my mind. |
|
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Vadik29
Choice Battle 1.6а
![]() ![]() offline
Опыт:
15,845Активность: |
Variecs, Код бред, читай про оптимизацию, все ваши проверки можно легко оптимизировать и убрать лишние переменные. Также советую на такие случаи, создавать глобальный булэкспр, чтобы избежать лишние действия.
В данном случае можно без переменной.
Вроде как так. Отредактировано Vadik29, 09.03.2013 в 19:34. |
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Чтобы избежать в дальнейшем такого нелепого недопонимания:
Код:
Здесь нет утечек? |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Киря
![]() ![]() offline
Опыт:
769Активность: |
Variecs:
TriggerUnit - это юнит, для которого сработало событие. В это время он присутствует у тебя на карте, ты его видишь. GetTriggerUnit() возвращает ссылку на данного юнита (указатель что-ли). Он не копирует этого юнита. |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
Variecs:
нету |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Всё, не вижу смысла объяснять суть, почему мой код изобилует таким безобразием, главное я понял, в каких ситуациях возникают утечки. Когда поменяю, отпишусь, но вдруг ошибка не в этом, так что тему пока желательно оставить.
Ах да, и спасибо. |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Hate
конь вакуумный
![]() ![]() offline
Опыт:
43,033Активность: |
причину вашей проблемы описал диод в посте номер 9, вы удаляете свой кондишн, т.к. слишком увлеклись оптимизацией и попытками сделать совершенный и идеальный код. Печально то, что вы в этих попытках как раз избрали не верный путь, и неверное решение вследствие незнания. Пожалуйста, будьте внимательнее. |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Variecs
![]() ![]() offline
Опыт:
2,508Активность: |
Я удаляю кондишн для динамического триггера, а условие перестает работать для базового.
|
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|