Приветствую вас,скриптеры! У меня к вам вопрос,по поводу информации о компиляции.
В общем у меня есть диалоги,которые я перебираю свитчем,ну в общем не в этом суть,и там в определенном кейсе,создаю локальную переменную,выглядит это примерно так:
PHP код:
case dTest:
{
static const msg[] = "Тут текст диалогового окна, и сюда %s попадет еще текст потом,после форматирования";
new str[sizeof(msg)+113];//ПРО ЭТУ ЛОКАЛЬНУЮ ПЕРЕМЕННУЮ ПОЙДЕТ РЕЧЬ
format(str, sizeof(str), msg, ПОДСТАВЛЯЮ_ДАННЫЕ);//Отформатировали к примеру
return ShowPlayerDialog(playerid, dTest, DIALOG_STYLE_MSGBOX, "Заголовок", str, "Да", "Нет");
}
И после компиляции,мне выводится:
PHP код:
Header size: 2104 bytes
Code size: 53352 bytes//Обратите внимание - 53352 байта
Data size: 79980 bytes//Обратите внимание - 79980 байтов
Stack/heap size: 16384 bytes; estimated max. usage=968 cells (3872 bytes)//Обратите внимание - 968 ячеек
Total requirements: 151820 bytes
И просто ради интереса,для теста,я переменную new str[sizeof(msg)+113]; переименовал так: static str[sizeof(msg)+113];
И вот что из этого вышло:
PHP код:
Header size: 2104 bytes
Code size: 53316 bytes//Здесь уменьшилось на 36 байтов
Data size: 81848 bytes //А здесь уже увеличилось на 1868 байтов
Stack/heap size: 16384 bytes; estimated max. usage=915 cells (3660 bytes)//Обратите внимание,уже - 915 ячеек и 3660 байтов
Total requirements: 153652 bytes
И получается,что мне от части выгоднее юзать static str[sizeof(msg)+113];, нежели new str[sizeof(msg)+113]; ? Или я не особо понял про эту информацию (имею в виду,инфу,что выводится при компиляции).
Просто,я читал вообще про оператор static. Там было сказано,что он как бы изменяет пределы видимости переменной. Т.е если я пишу это в инклюде (что я как раз и делаю),то в других местах я до нее не дотянусь (хотя она у меня и так локальна).
В общем,написав данный пост, у меня появились такие вопросы:
1) Почему,если написав new выделяется больше байтов в стэке и ячеек?
2) Как вообще здесь будет правильней? Использовать new или как раз этот static?
3) Если можно,объясните вообще про Header size,Code Size,Data Size,Stack. Я вообще как-то читал статью про это,но все равно особо не догоняю. Было бы не плохо объяснить по проще про эти дела..
За ранее большое спасибо!