SA-MP Forums Archive
Отсылка жирного HTTP-запрсоа - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Отсылка жирного HTTP-запрсоа (/showthread.php?tid=573199)



Отсылка жирного HTTP-запрсоа - ZaR - 05.05.2015

Подкосила меня жизнь, внезапно нужно написать небольшой кусок кода.

Я вкратце почитал стандарт Pawn (совсем мельком) и быстро не нашёл как и где выделяется память при использовании оператора new. Тем не менее, мне нужно сформировать большой массив данных и отправить их по HTTP.
При задании размера массива в 4096 (байт же?) этот ваш странный интерпретатор очень странно себя ведёт, не выполняя ничего (есть у меня предположение, что я стек таким образом переполняю). Тогда вопрос -- есть ли возможность в каком-то heap'е, если он вообще есть, выделять место?

Или же простой скриптовый язык никак не подразумевает работу с памятью?

Прошу прощения, что не уделил достаточного времени на изучение стандарта, совсем времени свободного нет.
Писать плагин, конечно, можно, но не хочется.

Спасибо.


Re: Отсылка жирного HTTP-запрсоа - stabker - 05.05.2015

Память выделяется из стека. Размер стека можно увеличить так: #pragma dynamic количество_байт

Если речь о new array[4096], то это 4096 ячеек по 4 байта, а не 4096 байт (т.е. 4096 * 4 = 16384).


Re: Отсылка жирного HTTP-запрсоа - ZaR - 05.05.2015

Спасибо.

Отлично, а 4 байта -- это по размеру int'а на целевой системе?
Но да ладно, string'и умеют паковаться, верно, судя по стандарту.
Оно нормально работает (или работает ли вообще) на данной версии Pawn-интерпретатора?

Ну и главный таки вопрос был -- а в heap'е-то мы можем выделять что-нибудь?
16 килобайт мне всё равно не хватит.


Re: Отсылка жирного HTTP-запрсоа - ZiGGi - 05.05.2015

Создавай эту переменную глобально, ничего выделять не придётся. Но если ты имеешь ввиду выделение памяти динамически, то нет, без сторонних плагинов ничего не выйдет.
Запаковка работает нормально.


Re: Отсылка жирного HTTP-запрсоа - White_116 - 05.05.2015

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Создавай эту переменную глобально, ничего выделять не придётся. Но если ты имеешь ввиду выделение памяти динамически, то нет, без сторонних плагинов ничего не выйдет.
Запаковка работает нормально.
Без плагинов можно, но достаточно медленно всё это при больших объёмах.
https://sampforum.blast.hk/showthread.php?tid=137501


Re: Отсылка жирного HTTP-запрсоа - ZiGGi - 05.05.2015

Quote:
Originally Posted by White_116
Посмотреть сообщение
Без плагинов можно, но достаточно медленно всё это при больших объёмах.
https://sampforum.blast.hk/showthread.php?tid=137501
*property - это не то, я имел ввиду что-то вроде этого: https://sampforum.blast.hk/showthread.php?tid=451381


Re: Отсылка жирного HTTP-запрсоа - ZaR - 05.05.2015

Чо-т жесть какая-то.

Мне нужно отправить жирный запрос -- дамп БД (не спрашивайте, зачем). 200 символов в среднем на запись в БД (с учётом, что все unicode-символы подверглись urlencode'у) -- получается уже 800 байт, то есть чёрт побери 1 килобайт на запись. Записей -- допустим, 5к. 5 мегабайт в оперативной памяти, которая отжирает глобальная переменная -- это жесть.


Re: Отсылка жирного HTTP-запрсоа - ZiGGi - 05.05.2015

Quote:
Originally Posted by ZaR
Посмотреть сообщение
Чо-т жесть какая-то.

Мне нужно отправить жирный запрос -- дамп БД (не спрашивайте, зачем). 200 символов в среднем на запись в БД (с учётом, что все unicode-символы подверглись urlencode'у) -- получается уже 800 байт, то есть чёрт побери 1 килобайт на запись. Записей -- допустим, 5к. 5 мегабайт в оперативной памяти, которая отжирает глобальная переменная -- это жесть.
Это же одноразовый запрос? Да и разве 5 мегабайт это много? 2015 на дворе.

P.S. Выглядит так, как будто ты хочешь FS'ом утащить базу -_-


Re: Отсылка жирного HTTP-запрсоа - ZaR - 06.05.2015

Одноразовый-то одноразовый, только если ты делаешь глобальную переменную, нет особой разницы -- будешь ты её 1 раз использовать или 10 -- 5 мегабайт съедены.

2015-то на дворе, но жить и без гарбажколлектора, и без ручного выделения и очистки памяти -- как-то не оч в императивном языке.