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

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

Закрытая тема
 
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,259
Активность:
хеш таблица и хендлы
Допустим я использую хеш таблицу в 1001 месте в скрипте карты, многократно, и записал хендл не в пустую ячейку а в ячейку занятую другим хендлом, вызовет ли это утечку?
Старый 05.04.2012, 04:45
DaeDR

offline
Опыт: 8,074
Активность:
quq_CCCP, Ячейка будет просто перезаписана. Если в ней был real, integer и иже с ним., не требующий удаления объекта, то нет.
Старый 05.04.2012, 05:44
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,259
Активность:
DaeDR, да вот есть подозрение что нет, в неё то запишет а хендл останется висеть, в памяти, периодический рост хендлов в карте настораживает , и создаются они строго определённым интервалом...
Вот если я записал юнита в хеш, затем убил его, терригенно, а затем в эту ячейку другого юнита записал, не юзая RemoveUnit(WhithUnit), будет ли утечка?

Отредактировано quq_CCCP, 05.04.2012 в 08:14.
Старый 05.04.2012, 05:50
Uncolo

offline
Опыт: 580
Активность:
quq_CCCP, При записи в данную ячейку, она просто заменится другим значением, утечки не должно вызывать. А юнита загруженного из хеша можно просто убить или ремувить
Старый 05.04.2012, 10:11
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
перезаписывается
не будет утечки
Старый 05.04.2012, 10:17
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,259
Активность:
16GB, ладно спасибо. буду искать счего у меня время от времени + 20 хендлов...
Тему можно закрывать.
Старый 05.04.2012, 10:21
ScorpioT1000
Работаем
offline
Опыт: отключен
Вот если я записал юнита в хеш, затем убил его, терригенно, а затем в эту ячейку другого юнита записал, не юзая RemoveUnit(WhithUnit), будет ли утечка?
нет, если бы ты читал статью xgm.ru/p/wc3/w3_data_types, то знал бы, что хендл - это указатель и работает так же как число, только не удаляется автоматически в конце функций
Старый 05.04.2012, 14:07
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,259
Активность:
ScorpioT1000, то что хендл или переменная ссылочного типа,в которой находится адрес ячейки (ячеек) памяти, я знаю... Но только вот в хеше мы сохраняем ссылку а не все ячейки памяти, дак вот меня интересовало про память а не хештаблицу...
Старый 05.04.2012, 14:24
ScorpioT1000
Работаем
offline
Опыт: отключен
Ты сохраняешь эту ссылку в хештейбле, но в функции ты обязан присвоить ей null, иначе будет утечка в функции. в хештейбле не будет утечка, т.к. там для каждой новой переменной не выделяется новое место в стеке, а в функции выделяется.
Старый 05.04.2012, 14:28
J64_

offline
Опыт: 4,724
Активность:
Вроде слышал что чрезмерное употребление хеш-таблиц могут вызвать ошибки с рециркуляцией хэндлов. Тоадсор вроде поднимал тему с этим.
автор путает кеш и хеш, это можно не читать © Sc

Отредактировано ScorpioT1000, 05.04.2012 в 15:36.
Старый 05.04.2012, 14:45
Закрытая тема

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

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

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

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



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