Всех приветствую. Возник такой вопрос. При создании одной занятной системы, связанной с хэш-таблицей, при постоянном использовании функции с конструкцией возникает выделение памяти, доходящее до предела и выбивает вар. Привожу часть кода, который вызывает сомнения:
}elseif GetHandleId(LoadUnitHandle(table,parentKey,childKey) > 0){
	return UNIT_STR
}elseif ..
Пояснения, зачем и как это работает: позволяет определить тип переменной, сохраненной в конкретной ячейке хэш-таблицы (помогает при debag'е), но память все же выделяется, что быть не должно. Как с этим бороться?
P.S.: я знаю, хэш-таблицы - зло, но все же мне нравится их использовать.

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

MultiboardGetItem создает игровой объект-ячейку, MultiboardReleaseItem разбивает её обратно. Если таблица навсегда. то выгоднее хранить объекты в массиве, чтобы не терять время на постоянные Get-Release + это позволяет в дальнейшем асинхронно менять содержимое ячеек, что невозможно, если использовать функции.
Ну а кто жрет память, моешь с помощью этой тулзы глянуть (может не запускаться, у меня работает) - кинуть в корень варика и запустить при работающей игре
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
6
16
6 лет назад
6
хт не зло, а настоящий дар свыше
у тебя везде MultiboardGetItem, а кто будет MultiboardReleaseItem делать?
0
13
6 лет назад
0
DracoL1ch, просто раньше таблицы так критиковали, говорили перейти на массивы и структуры. Вот поэтому и пришлось так назвать) А функция release что делает? Удаляет сам объект ячейки? Просто за все время я почти не работал с лидербордами и мультибордами, поэтому для меня это не совсем известная тема.
DracoL1ch, с применением функции вопрос с потреблением памяти решился, но все равно по диспетчеру задач потребление медленно-медленно растет.
4
16
6 лет назад
Отредактирован DracoL1ch
4
MultiboardGetItem создает игровой объект-ячейку, MultiboardReleaseItem разбивает её обратно. Если таблица навсегда. то выгоднее хранить объекты в массиве, чтобы не терять время на постоянные Get-Release + это позволяет в дальнейшем асинхронно менять содержимое ячеек, что невозможно, если использовать функции.
Ну а кто жрет память, моешь с помощью этой тулзы глянуть (может не запускаться, у меня работает) - кинуть в корень варика и запустить при работающей игре
Загруженные файлы
Принятый ответ
0
13
6 лет назад
0
DracoL1ch, большое спасибо.
0
28
6 лет назад
0
просто раньше таблицы так критиковали, говорили перейти на массивы и структуры.
просто некоторые уникумы используют таблицу там где она нафиг не нужна
либо используют не правильно
ну и в большинстве случаев структуры удобнее чем таблицы
т.к. намного проще сделать missile.getDamage() чем таскать из таблицы данные
особенно если данные потом надо обработать и заново записать в таблицу
особенно весело работать с таблицей когда в качестве индексов выступают не константы/дефайны а магические числа
и потом месяца через 4 вспоминай что там хранилось в ячейке 16-5
0
16
6 лет назад
0
а в чем принципиальная разнциа будет? можно написать аналогичный интерфейс под таблицы, если так нравится конкретно этот синтаксис.
и нет никаких проблем с индексами, если следовать собственным правилам. В №2 всегда кастер, в №5 всегда уровень, там же булька - есть улучшение или нет, в №17 дамми и т.д.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.