Создал локалки
local unit u = GetTriggerUnit()
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local location l = Location(x,y)
Обнуление l выходит сделать. А как обнулить(очищать) x и y не знаю и надо ли их вообще как-то обнулять(очищать)
подскажите пожалуйста

Принятый ответ

Обнулять локалки надо только с типом данных Handle и его производных (юниты, точки ...)
другие типы данных такие как int, real, string очищаются автоматически
Также хочу сказать что точки после использования нужно уничтожать:
call RemoveLocation(имя)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
0
25
3 недели назад
Отредактирован konvan5
0
Вроде реальные числа обнулять не надо, как помню, ибо это не объект (и не хэндл).
1
2
3 недели назад
1
Обнулять локалки надо только с типом данных Handle и его производных (юниты, точки ...)
другие типы данных такие как int, real, string очищаются автоматически
Также хочу сказать что точки после использования нужно уничтожать:
call RemoveLocation(имя)
Принятый ответ
0
26
3 недели назад
0
integer, real, string, boolean
1
14
4 дня назад
Отредактирован host_pi
1
string очищаются автоматически
и да и нет
стринг это очень опасный тип, может быть даже самый опасный
если стринг переменную и можно обнулить, то нельзя обнулить память, которая была выделена под эту строку
при работе со стрингами забить оплимит можно в пару строк кода
ну а критануть вар так вообще одной строкой можно
Basically, every time you create a string that has a unique set of characters it will leak. (Note : These types of leaks are smaller than other leaks in terms of memory usage)
So if you do
Set Variable = "Hello"
Set Variable2 = "Hello"
it will only create one string leak. The reason why its leaking is that all strings in wc3 are simply pointers to the global string table. If you declare a new string, than it has to add the new string to the table if it doesn't exist. These leaks can't be cleared. In general, don't worry about it unless your processing custom chunks of strings
стоит разделять обнуление переменной и удаление объекта, на который ссылается эта переменная
если для всех объектов у нас есть функция очистки
то вот для стринга нет функции очистки
GroupClear(g)
DestroyGroup(g)
set g=null
call DisableTrigger(t)
call DestroyTrigger(t)
set t=null
call KillDestructable(d)
call RemoveDestructable(d)
set d=null
call KillUnit(u)
call RemoveUnit(u)
set u=null
call RemoveItem(it)
set it=null
call RemoveLocation(L)
set L=null
call ClearStringMemory(s) --- нет такой функции
set s=null --- переменная очищается автоматически
статьи по правильному созданию и обнулению всех типов переменных тоже нет до сих пор
0
37
4 дня назад
0
статьи по правильному созданию и обнулению всех типов переменных тоже нет до сих пор
1
14
4 дня назад
Отредактирован host_pi
1
Да есть же
нету создания : trigger t=CreateTrigger(), timer t=CreateTimer() и двадцати остальных
нету убийства : GroupClear, DisableTrigger, KillDestructable, KillUnit, PauseTimer и ещё десятка остальных
нету очистки : RemoveItem, DestroyGroup, DestroyTimerDialog, RemoveWeatherEffect и ещё десятка остальных
естественно не указано, что смена погоды может крашить вар ( set we = AddWeatherEffect(GetPlayableMapRect(), "zzzz") + call EnableWeatherEffect(we, true) )
про string вообще ничего не указано. я молчу про высокие материи про стринг типа моего поста выше, но банально даже лимиты стринга не указаны
то есть ценность у статьи - такая себе, полумера, которая не покрывает заявленную тему
Ответы (1)
0
37
4 дня назад
0
host_pi, что надо указывать про string? С ней ни у кого не было проблем, это не жава, одинаковые строки не дублируются
Про ремув всё написано
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.