Массив PROGMEM, потребляющий ОЗУ - PullRequest
0 голосов
/ 27 апреля 2018

Я определил (глобально) большой массив строк следующим образом:

const String opCodes[256]PROGMEM = {""...""}; // all 256 defined

Однако создание этого теперь потребляет на 20% больше оперативной памяти, чем до добавления массива.

Это было неожиданно. Почему так случилось? Спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

В конце концов я решил не использовать PROGMEM, так как его использование кажется немного подозрительным.

Обходным решением было использовать вместо него функцию F(). Это работает.

0 голосов
/ 27 апреля 2018

Объект Arduino String является динамической строкой, очень похожей на std::string. И как таковой хранит свои данные в динамически распределенной памяти в оперативной памяти.

Если вы хотите сохранить сами фактические строковые данные в PROGMEM, то ссылка Arduino PROGMEM скажет вам, как это сделать, используя вместо этого фактические массивы символов. Вкратце, создайте массивы символов, хранящиеся в PROGMEM, а затем создайте массив из const char * (также в PROGMEM), указывающий на строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...