我已经定义了(全局)大量的字符串数组:
const String opCodes[256]PROGMEM = {""...""}; // all 256 defined
然而,构建它现在比我添加阵列之前消耗的RAM多20%。
这是出乎意料的。为什么会这样?感谢
答案 0 :(得分:2)
Arduino String
object是一个动态字符串,与std::string
非常相似。因此将其数据存储在RAM中的动态分配内存中。
如果您想将实际的字符串数据本身存储在PROGMEM
中,那么Arduino PROGMEM
reference将告诉您如何使用实际的字符数组来代替它。简而言之,创建存储在PROGMEM
中的字符数组,然后创建指向字符串的const char *
数组(也在PROGMEM
中)。
答案 1 :(得分:0)
最后我决定不使用F()
因为它的使用似乎有点怀疑。
一个可用的解决方法是使用{{1}}函数。这很有效。