Подскажите, создает ли данный код утечку:
SaveHashtableHandle( Hashtable, id , 0, val )
FlushChildHashtable( Hashtable, id )
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
18
NazarPunk:
А вы хоть читали откуда берутся утечки?
а вы?
30
а вы?
А я не задаю вопросов, ответ на которые есть в статьях.

SaveHashtableHandle( Hashtable, id , 0, val )
FlushChildHashtable( Hashtable, id )
Откуда здесь утечки, если вы не создаёте хэндлов, которые повиснут в памяти?
26
вы же очищаете все дочерние ячейки, это же в названии написано самой функции
18
SaveUnitHandle(Hashtable, id, CreateUnit(...))
FlushChildHashtable(Hashtable, id)
Под переменной val уже имелось ввиду наличие созданного объекта. (см. название вопроса)
Hate:
вы же очищаете все дочерние ячейки, это же в названии написано самой функции

Вопрос про обнуление элемента, так как в других структурах, будь то глобальный массив или локальная переменная, объект не удалится, если не вписать туда null.
18
Представь что handle это тот же integer
просто содержит ссылку на какой то игровой объект
26
как сказали выше, хендл это не сам объект а ссылка на него, что бы его уничтожить нужно вручную вызывать соответствующие функции, сам по себе он наврятли исчезнет (офк в разумных пределах)
18
Представь что handle это тот же integer
просто содержит ссылку на какой то игровой объект
handle это и так __int32, каким образом эта информация говорит о работе счетчика ссылок?
Hate, спасибо за полезную информацию, не могли бы вы ответить на тему самого вопроса?
30
не могли бы вы ответить на тему самого вопроса?
Могу и я ответить
Нужно ли обнулять handle в хеш-таблице?
Нужно.

Неужели так уж сложно немного подумать?
local handle a = GetHandleId() -- создаём хэндл
call SaveHashtableHandle( Hashtable, id , 0, val ) -- в хэштаблице по ключам id,0 появилось значение этого хэндла
call FlushChildHashtable( Hashtable, id ) -- все записи по ключу id исчезли из таблицы
set a = null -- хэндл никуда не делся и его нужно обнулить
18
Vlod,
А тебе в голову не приходила мысль что FlushChildHashtable очищает, так же как и RemoveSavedHandle
И каким образом обычное присваивание null может влиять на так называемый "счетчик ссылок"?
Я бы даже так сказал: если не делать FlushChildHashtable или RemoveSavedHandle - то это как раз и будет утечкой
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.