Утечка памяти

diller110

Добрая душа
Сообщения
353
Реакции
278
Помогите разобраться, от чего может происходить утечка:
C-подобный:
[SM] Plugin encountered error 17: Stack memory leaked by native
L 02/26/2015 - 00:48:14: [SM] Displaying call stack trace for plugin "ac-core.smx":
L 02/26/2015 - 00:48:14: [SM]   [0]  Line 169, ac-core.sp::Event_PlayerTeam()
Вот код:
Оффтоп Посмотреть вложение hintmesseger.sp

Строка указанная в ошибке:
new String:Admins[count] [];
 

diller110

Добрая душа
Сообщения
353
Реакции
278
Так и не смог понять. Возможно, забываю закрыть какой-то handle. Таймеры все разовые, вроде должны удалять по завершению. Единственный Datapack закрываю в таймере, не уверен что произойдет если закрыть его сразу после посылки в таймер на 10 секунд, скопируется ли он или уничтожится не дождавшись выполнения.

Вот обособленный плагин: Посмотреть вложение ac-hintmessenger.sp. Сама ошибка: Оффтоп

И еще теоретический вопрос: Допустим надо вывести в чат сообщение через 5 секунд после присоединения к команде. В player_team ивенте создаем таймер. Будет ли он создан конкретно для этого игрока, или при заходе другого игрока этот же таймер пойдет заного? Если 2-е, то как эффективнее всего создавать подобное?
new Handle:WelcomeTimers[33][4]; - по ощущениям тяжеловато. И возможно утечка памяти именно в этом.
 

diller110

Добрая душа
Сообщения
353
Реакции
278
Да намного проще и эффективнее) Спасибо!
 

diller110

Добрая душа
Сообщения
353
Реакции
278
AlmazON, Все хорошо работает, кроме вывода админов. И снова мозгодробительные ошибки.
Таймеры срабатывают успешно, добавлял в 3 таймер вывод: Timer 3 finished, без проблем выводило, но в хинты не хотел. Написал себе понятную версию вместо:
(Оба варианта в файле Посмотреть вложение hintmesseger.sp)
Оффтоп
Вот такую (опять с массивом и лишним счетчиком):
Оффтоп

Ошибка заключалась в том, что PrintHintText() - не мог найти client с номером 167*****(видимо макс целочисленное). Как вообще такое возможно не понимаю. Client от момента получения никак не юзается. Userid еще интереснее, пишет ошибку например что userid=209 не найден. В то время как я именно 209 id.

В остальном все работает хорошо! Можешь еще подсказать, что & считает в этой операции: GetUserFlagBits(i) & ADMFLAG_ROOT)?

И еще: Можно в if в скобки вводить условия? && ((GetUserFlagBits(i) & ADMFLAG_SLAY) || (GetUserFlagBits(i) & ADMFLAG_ROOT)) &&
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
diller110
Ты используешь userid О_О ты же клиента получаешь, вот его и юзай
а если админов больше 2?
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Hint Messenger v1.0 (отвязано от ядра)

Всё работает, за ваши собственные "багоисправления" я не отвечаю! :)
Отвязал плагин от ядра, добавил проверку на ботов (дабы зря система дальше от них не работала), поменял доступ на флаг ROOT, убрал все цвета - все сообщения были отображены (и да, меня, как админа отобразило).
Даже ошибок при компиляции нет, которые могли быть по невнимательности, а ещё жалуются! :-D
 

Вложения

  • ac-hintmessenger.sp
    2.3 КБ · Просмотры: 8

diller110

Добрая душа
Сообщения
353
Реакции
278
Спасибо за старания, добавил цвета (вставил из прошлого, поэтому не в них было дело). Все работает отлично!

Интересно все-таки: GetUserFlagBits(userid) & ADMFLAG_ROOT, эквивалентно ==, или что он высчитывает?


а если админов больше 2?
В хинт строки ограничены, поэтому и 2 хватит.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
что он высчитывает
Количество битов. & - побитовый И или побитовое сравнение. Биты смотри в константах include функций.
вставил из прошлого, поэтому не в них было дело
Во флаге было дело - нет такого флага ни у кого (отдельного), вот и сообщения нет.
 
Сверху Снизу