Вот все мы знаем, что после каждой установленной точки надо ее очищать, а что делать с переменными типа real или integer?
Стоит ли очищать эти данные, путем установления на нулевое значение в завершения триггера?
Влияет ли это на память?

Нет, они не утекают.
Утекают группы, точки, эффекты, строки, вроде как камеры и многие объекты типа handle, но не все, есть некоторые псевдохэндлы. Но в этом не эксперт, просто ретранслировал информацию, которую прежде читал.
строки не чистятся

Вот тут о том, что текстаг не является настоящим хэндлом, но не знаю, создаёт ли он ещё утечки кроме утечки строки.
DracoL1ch:
тексттаг не является настоящим хендлом и не подвержен синхронизации, каждйы клиент имеет свои таги
аналогично молнии и уберсплаты
проверяется GetHandleId(объект)
если результат меньше 0x100000 - это локальный объект без синхронизации
Странно, что нигде не видел статьи с полным списком возможных утечек. По идее за столько лет кто-то мог бы и заморочиться.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
Хотя нет, точки и группы создают же объект, а эта просто ссылается.
Нужно понимать разницу между переменной и самим объектом. Переменная просто содержит ссылку на объект, и занимает 32 бита (для варкарафта), объект же занимает столько, сколько ему нужно. Объект нужно либо самому удалять, либо игра сама это сделает (юнит умер и разложился). Глобалки тоже нужно обнулять, чтобы garbage collector (или аналог этого для вара) видел, что хендл объекта никому не нужен, и выдавал этот хендл новому объекту.
26
Извини, если задену, но ты просто мастер объяснять. Ничего нового не сообщил, зато в известной информации запутал!
26
Что глобалки нужно обнулять. Например, удалил группу, нужно ли после этого обнулить глобалку на неё? Как бы понимаю, что нет, но объяснение довело до таких мыслей.
16
предполагается, что ты в глобалку один фиг будешь что-то записывать и неиспользуемый хендл и так, и так будет "обнулен".
26
DracoL1ch, ну да)
PT153, смотри-ка
function CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group
    call GroupClear(bj_lastCreatedGroup)
    loop
        set count = count - 1
        exitwhen count < 0
        call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
        call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
    endloop
    return bj_lastCreatedGroup
endfunction
группа-то является bj_-переменной, которая не множится, то есть не надо её удалять после создания юнита.
28
PT153, смотри-ка
Да, в этом случае обнулять и удалять не надо, потому что новая группа нигде не создаётся.
Что глобалки нужно обнулять.
Лично я обнуляю ячейки с структурах, потому что неизвестно, когда данная ячейка будет вновь использована. То есть, записанный хендл там может висеть долго. Чтобы он был освобождён, я обнуляю. А ячейки в структурах - глобальные массивы.
Также нужно обнулять локальные массивы типа handle и его наследников.
А так согласен с DracoL1ch.
предполагается, что ты в глобалку один фиг будешь что-то записывать и неиспользуемый хендл и так, и так будет "обнулен".
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.