PDA

Просмотр полной версии : [Вопрос] SVarString



LLIapuk
17.12.2015, 20:58
Доброе время суток, знатоки!!!

У меня возник вопрос по поводу использования SVarString, в чем же его прелесть?!
Ведь чтобы получить значение SVar'а все равно нужна переменная, в которой это значение будет хранится.

Пример 1 (обычная переменная):
http://i.imgur.com/q3WYfRI.png


main()
{
new string[5];
string = "Text";
printf("%s", string);
}


Пример 2 (SVarString):
http://i.imgur.com/tFIGdPR.png


main()
{
SetSVarString("svar", "Text");
new string[5];
GetSVarString("svar", string, sizeof(string));
DeleteSVar("svar");
printf("%s", string);
}


Как видно на скриншотах, то SVar'ы даже больше памяти жрут и код значительно больше.
Объясните мне, зачем они тогда?!

Desulaid
17.12.2015, 22:37
Возьму на пример старую версию инклуда fix_k2bex и новую. В старой версии причина записывалась в глобальный массив, а это MAX_PLAYERS * 128 байт памяти. И вся соль в том, что этот массив нам понадобится 1 раз (в расчете присутствия игрока на сервере), лучшим вариантом будет, если создать локальный массив в 128 байт и удалить его. Тупо, если нам понадобилась это кол-во памяти, мы взяли, а потом избавились, в то время как глобальный массив сидит и жрет MAX_PLAYERS * 128 байт памяти + не факт, что мы его будем использовать.