Хватит ли мне памяти?
- Войдите на сайт для отправки комментариев
Втр, 20/12/2016 - 03:40
Есть глобальные переменные вида
String value1 = "string26byte";
Сделать локальными нет возможности. Это своего рода константы, то есть текст в них сравнивается с текстом из сериал порта. Так вот этих переменных 181 штука:) и мне почему то кажется, что не хватит оперативки на все эти переменные. Что можете сказать по этому поводу?
Могу сказать, что для 181 переменной по 26 байтов типа String (занимает 6 байтов) с учётом накладных расходов – 2 байта, потребуется 181*(26+6+2)=6154 байта. (Вы эти действия в третьем классе проходить будете, а пока поверьте на слово).
Также могу сказать, что если Вам кажется - перекреститесь, а если Вам нужно, чтобы кто-то за Вас сравнил число 6154 с размером оперативной памяти, так Вы, блин, хоть бы сказали, ЧЬЮ память Вы имеете в виду. Меги? Или Тиньки, или может «Sunway TaihuLight»?
PROGMEM: http://atmel.ucoz.ru/publ/progmem/1-1-0-64
Если значения имеют вид типа "string26byte";"string27byte";"string28byte"; или вобще "string**byte"; "string******"; и т.д. то эту бредятину вобще хранить так не нужно, нужно разделять на осмысленые части и сравнивать по частям. И не в String а в char[].
Евгений меня правильно понял, то есть "string26byte" - это 26 различных не повторяющихся символов. Плата UNO. Так значит воспользоватся progmem как советовал arduino328?
Только тип String Вы туда по любому не запихнёте. Придется обходится массивами char
И от того, есть ли у Вас столько места в прогмем.
Константы определенные PROGMEM лишнего места в программной памяти не занимают. Если по замыслу разработчика константы должны быть в оперативке, они все равно будут размещены в программной, откуда затем будут копироваться при инициализации программы.