XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
J
expert
offline
Опыт: 48,447
Активность:
Нужно удалять те переменые, объект, на который они сылаются - был создан вы этой функци или был удален

Код:
function Func_Timer takes nothing returns nothing
    local timer Timer = GetExpiredTimer()
    call DestroyTimer(Timer)
    //set Timer = null
endfunction

function Func takes nothing returns nothing
    local timer Timer = CreateTimer ()
    call TimerStart(Timer, 0.01, false, function Func_Timer)
    set Timer = null
endfunction


Это ВыЗоВеТ(!) утечку

Отредактировано Jon, 06.08.2007 в 21:16.
Старый 06.08.2007, 21:11
YasonDelAlt

offline
Опыт: 862
Активность:
А это вызовет утечку?
Код:
function Func_Timer takes timer Timer returns nothing
    call DestroyTimer(Timer)
endfunction
Старый 09.08.2007, 08:55
adic3x

offline
Опыт: 108,439
Активность:
хорошо, а на чем это основывается? такой вывод. расскажи плз.
Старый 09.08.2007, 11:32
J
expert
offline
Опыт: 48,447
Активность:
YasonDelAlt не вызывает, т.к. локальных переменных тут по сути нет, только пораметры.
ADOLF проверяю просто количество утечек (см конец моей статьи)

Jon добавил:
YasonDelAlt но та функция из которой ты вызвал эту всеже должна обнулить переменую, т.к. обьект был удален
Старый 09.08.2007, 17:13
YasonDelAlt

offline
Опыт: 862
Активность:
Jon, как так нет локальных переменных, а Timer? Переданный параметр должен где-то хранится? А по логике вещей, хранится он будет в стековом фрейме функции, или я на прав?
Старый 10.08.2007, 21:02
exAres
I love magic :)
offline
Опыт: 7,788
Активность:
YasonDelAlt пременную типа "таймер" ты не создаёшь в этой функции, в функцию передаётся только ссылка.
Старый 11.08.2007, 01:29
YasonDelAlt

offline
Опыт: 862
Активность:
Ладно, тогда что произойдет в таком случае:
Код:
function Func_Timer takes timer Timer returns nothing
    set Timer = CreateTimer ()
endfunction
Старый 11.08.2007, 15:11
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:40.