enjoynering
Well-known member
Мучает впорс по оптимизации памяти. Как мы все знаем в МК есть стек (stack) и куча(heap). Стек для глобальных переменных и сним ПОКА впросов нет. А вот куча которая используется для локальных переменных, находящихся внутри различных функций, не дает мне спать.
Вот пример кода для затравки
Здесь мы объявили переменные changed и load в начале функции. Вопрос первый: changed имеет размерность одни байт, но ESP8266 у нас 32 битный. Зачит ли это что для changed в куче выделится 32 бита? Впрос второй: как мы знаем переменные типа String - это безразмерный Array типа Char. Я инициализировал load c пробелом. Значит в куче под него будет 1 байт. Потом мы выделил в куче место под float x. По идее оно должно встать в куче сразу за пробелом? Потом я начинаю принимать в load данные от сервера которые уже например 20 байт. Как поведет себя куча в этом случае если у меня до этого под load выделилось всего 1 байт?
Не лучше бы сделать так?
Заранее спсибо.
Вот пример кода для затравки
Код:
void webTest()
{
bool changed = false;
String load = " ";
Serial.println("\r\nrequest TEST");
float x = 345.345/345.567;
load = WebServer.arg("module");
if (load.length() > 0)
{
changed = true
}
Не лучше бы сделать так?
Код:
void webTest()
{
bool changed = false;
Serial.println("\r\nrequest TEST");
float x = 345.345/345.567;
String load = WebServer.arg("module");
if (load.length() > 0)
{
changed = true
}