[Вопрос] Переменная типа group, проблема с утечкой.
|
|
Позитроныч | Дата: Суббота, 04 Февраля 2012, 19:10:24 | Сообщение # 1 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 0
Блокировки:
| Приведу кусочек своего кода: Code local group g ... set g = GetUnitsInRangeOfLocAll(35.00, pozS2)//(pozS2 - это точка, с ней проблем нет, поэтому часть кода,связанная с ней,не показана) ... call DestroyGroup(g) set g = null Вроде я всё сделал правильно,однако же именно этот кусок программы почему-то вызывает утечку. Как её устранить ?
|
|
|
|
Ty3uK | Дата: Суббота, 04 Февраля 2012, 19:17:14 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Так, для начала, группу надо создать: local group g = CreateGroup() далее, дабы не юзать бж, сделаем проще: call GrousEnumUnitsInRange(g, GetLocationX(pozS2), GetLocationY(pozS2), 35, null) далее делаем нужные действия с ней, уничтожаем и обнуляем, как у вас и было. Ах да- лучше сразу юзать координаты, а не точку Добавлено (04 Февраль 2012, 19:17:14) --------------------------------------------- Прошу прощения за сплошной код- пишу с микроволновки
|
|
|
|
[DUОS] | Дата: Суббота, 04 Февраля 2012, 19:33:25 | Сообщение # 3 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Позитроныч, У тебя эта точка что собственно содержит?
|
|
|
|
SirNikolas | Дата: Суббота, 04 Февраля 2012, 19:34:16 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code function GetUnitsInRectMatching takes rect r, boolexpr filter returns group local group g = CreateGroup() call GroupEnumUnitsInRect(g, r, filter) call DestroyBoolExpr(filter) return g endfunction Здесь возвращается локальная переменная, что является утечкой. Единственный вариант избежать ее - не пользоваться данной функцией.
|
|
|
|
Ty3uK | Дата: Суббота, 04 Февраля 2012, 19:37:24 | Сообщение # 5 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Так он использует другую функцию. Или она внутри?
|
|
|
|
SirNikolas | Дата: Суббота, 04 Февраля 2012, 19:41:19 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Такая штука со всеми GetUnits... и GetPlayers... (которые возвращают group и force).
|
|
|
|
Ty3uK | Дата: Суббота, 04 Февраля 2012, 19:43:29 | Сообщение # 7 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Хм... Понятно. Просто на микроволновке jngp или жасскрафт открыть не получается
|
|
|
|
Позитроныч | Дата: Суббота, 04 Февраля 2012, 19:58:46 | Сообщение # 8 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 0
Блокировки:
| Угу, так как всё-таки мне быть?Получается, утечки никак не избежать?
|
|
|
|
Ty3uK | Дата: Суббота, 04 Февраля 2012, 20:00:41 | Сообщение # 9 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Смотри мой пост- я написал решение
|
|
|
|
Позитроныч | Дата: Суббота, 04 Февраля 2012, 20:03:35 | Сообщение # 10 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 0
Блокировки:
| Вариант Ty3uKа попробовал, всё равно утечки идут.
|
|
|
|
Ty3uK | Дата: Суббота, 04 Февраля 2012, 20:05:03 | Сообщение # 11 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Им банально неоткуда взяться. Чем ты их детектишь?
|
|
|
|
Позитроныч | Дата: Суббота, 04 Февраля 2012, 20:16:30 | Сообщение # 12 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 0
Блокировки:
| Счётчиком handle-ов. Может быть, дело в этом? Добавлено (04 Февраль 2012, 20:14:17) --------------------------------------------- У-упс, похоже,утечка откуда-то из другого места. Странно, я же всё остальное проверял, их не было... Добавлено (04 Февраль 2012, 20:16:30) --------------------------------------------- Нет, к сожалению, оттуда-же...
|
|
|
|
Ty3uK | Дата: Суббота, 04 Февраля 2012, 20:20:55 | Сообщение # 13 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Нет, она явно не оттуда. Или свой счетчик считает за утечку создание локальной группы (вполне вероятно, ибо количество хэндлов из-за нее увеличивается на один) Добавлено (04 Февраль 2012, 20:20:55) --------------------------------------------- А утечек тут нет. Факт
|
|
|
|
Позитроныч | Дата: Суббота, 04 Февраля 2012, 20:23:01 | Сообщение # 14 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 0
Блокировки:
| Всё,всем спасибо за ответы, разобрался. В варианте Ty3uKа утечек нет.
|
|
|
|