Массив из структур, расход памяти
- Войдите на сайт для отправки комментариев
Пт, 20/11/2015 - 14:27
Как уменьшить расход памяти при использовании масиива структур?
typedef struct {
byte tempAddrAir[8];
byte tempAddrFloor[8];
int16_t tAirRaw;
int16_t tFloorRaw;
byte flapPin;
bool isFlapOn;
} Contour;
Contour contour1 = {
{0x28, 0xFF, 0xB5, 0xAB, 0x90, 0x15, 0x01, 0x8D},
{0x28, 0xFF, 0xAB, 0x39, 0x90, 0x15, 0x01, 0xB5},
4080,
4080,
4,
false
};
Contour contour2 = {
{0x28, 0xFF, 0x72, 0x3B, 0x90, 0x15, 0x01, 0x1F},
{0x28, 0xFF, 0x14, 0xB1, 0x90, 0x15, 0x01, 0x50},
4080,
4080,
5,
false
};
Contour contours[] = {contour1, contour2};
void setup() {
}
void loop() {
}
Sketch uses 590 bytes (1%) of program storage space. Maximum is 30 720 bytes.
Global variables use 97 bytes (4%) of dynamic memory, leaving 1 951 bytes for local variables. Maximum is 2 048 bytes.
т.е получается выделяется 97байт оперативки, а должно быть 22 байта структура их у нас две и 9 байт пустой скетч. Итого 22+22+9 = 53 байта Пока таких структур 2, можно не обращать на повыщеный расход оперативки, но когда структур будет 8.
Contour contours[] = {contour1, contour2, contour3, contour4, contour5, contour6, contour7, contour8};вы же их сначала объявляете, а потом в массив складываете вот и получается 22+ 22 и массив 22+22, объявляйте сразу в массиве
Как уменьшить расход памяти при использовании масиива структур?
для начала, не дублировать их все дважды.
Точно, всем огромное спасибо! Помогло!!!!
Видимо так:
typedef struct { byte tempAddrAir[8]; byte tempAddrFloor[8]; int16_t tAirRaw; int16_t tFloorRaw; byte flapPin; bool isFlapOn; } Contour; /* Contour contour1 = { {0x28, 0xFF, 0xB5, 0xAB, 0x90, 0x15, 0x01, 0x8D}, {0x28, 0xFF, 0xAB, 0x39, 0x90, 0x15, 0x01, 0xB5}, 4080, 4080, 4, false }; Contour contour2 = { {0x28, 0xFF, 0x72, 0x3B, 0x90, 0x15, 0x01, 0x1F}, {0x28, 0xFF, 0x14, 0xB1, 0x90, 0x15, 0x01, 0x50}, 4080, 4080, 5, false }; */ Contour contours[] = {{ {0x28, 0xFF, 0xB5, 0xAB, 0x90, 0x15, 0x01, 0x8D}, {0x28, 0xFF, 0xAB, 0x39, 0x90, 0x15, 0x01, 0xB5}, 4080, 4080, 4, false }, {{0x28, 0xFF, 0x72, 0x3B, 0x90, 0x15, 0x01, 0x1F}, {0x28, 0xFF, 0x14, 0xB1, 0x90, 0x15, 0x01, 0x50}, 4080, 4080, 5, false }}; void setup() { } void loop() { }ua6em, что это было? Джек Дэниэлс или что-то поэкзотичнее?