quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
хеш таблица и хендлы
Допустим я использую хеш таблицу в 1001 месте в скрипте карты, многократно, и записал хендл не в пустую ячейку а в ячейку занятую другим хендлом, вызовет ли это утечку? |
05.04.2012, 04:45 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
quq_CCCP, Ячейка будет просто перезаписана. Если в ней был real, integer и иже с ним., не требующий удаления объекта, то нет. |
05.04.2012, 05:44 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
DaeDR, да вот есть подозрение что нет, в неё то запишет а хендл останется висеть, в памяти, периодический рост хендлов в карте настораживает , и создаются они строго определённым интервалом... Вот если я записал юнита в хеш, затем убил его, терригенно, а затем в эту ячейку другого юнита записал, не юзая RemoveUnit(WhithUnit), будет ли утечка? Отредактировано quq_CCCP, 05.04.2012 в 08:14. |
05.04.2012, 05:50 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
quq_CCCP, При записи в данную ячейку, она просто заменится другим значением, утечки не должно вызывать. А юнита загруженного из хеша можно просто убить или ремувить
|
05.04.2012, 10:11 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
59,317Активность: |
перезаписывается не будет утечки |
05.04.2012, 10:17 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
16GB, ладно спасибо. буду искать счего у меня время от времени + 20 хендлов... Тему можно закрывать. |
05.04.2012, 10:21 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
нет, если бы ты читал статью xgm.ru/p/wc3/w3_data_types, то знал бы, что хендл - это указатель и работает так же как число, только не удаляется автоматически в конце функций |
05.04.2012, 14:07 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
ScorpioT1000, то что хендл или переменная ссылочного типа,в которой находится адрес ячейки (ячеек) памяти, я знаю... Но только вот в хеше мы сохраняем ссылку а не все ячейки памяти, дак вот меня интересовало про память а не хештаблицу... |
05.04.2012, 14:24 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Ты сохраняешь эту ссылку в хештейбле, но в функции ты обязан присвоить ей null, иначе будет утечка в функции. в хештейбле не будет утечка, т.к. там для каждой новой переменной не выделяется новое место в стеке, а в функции выделяется. |
05.04.2012, 14:28 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
Вроде слышал что чрезмерное употребление хеш-таблиц могут вызвать ошибки с рециркуляцией хэндлов. Тоадсор вроде поднимал тему с этим.
автор путает кеш и хеш, это можно не читать © Sc Отредактировано ScorpioT1000, 05.04.2012 в 15:36. |
05.04.2012, 14:45 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|