C++ 使用C++;Arduino中的程序设计语言

C++ 使用C++;Arduino中的程序设计语言,c++,memory,struct,arduino,C++,Memory,Struct,Arduino,我需要帮助找出如何最小化全局变量使用的动态内存。大部分内存由保存my struct数据的数组使用。我需要任何其他方法的帮助,我可以在不使用太多动态内存的情况下保存此类数据 typedef struct{ int fingerID; int idNo; char sirName[20]; }USER; USER users[200]; 您有硬件限制。假设你有一个Uno,你只有2Kb的内存。动态分配只是将您的问题推向未来,您将无法适应200条记录。您需要硬件约束的硬件解决方

我需要帮助找出如何最小化全局变量使用的动态内存。大部分内存由保存my struct数据的数组使用。我需要任何其他方法的帮助,我可以在不使用太多动态内存的情况下保存此类数据

typedef struct{
    int fingerID;
    int idNo;
    char sirName[20];
}USER;
USER users[200];

您有硬件限制。假设你有一个Uno,你只有2Kb的内存。动态分配只是将您的问题推向未来,您将无法适应200条记录。您需要硬件约束的硬件解决方案

最简单的解决方案是在Arduino上使用外部I2C EEPROM。你可以用很少的努力获得大量的记忆。有很多代码/硬件选项

另一个简单的解决方案是使用不同的CPU。一个超级内存会给你8Kb的内存。还有很多其他的CPU,我喜欢ESP8266的实现


最后一种解决方案是仅将Arduino用作传感器接口,将信息存储在功能更强的设备上,并在那里实现控制逻辑。

问题是什么?动态内存在哪里?我没有看到任何使用
char*sirName
和分配确切内存量的内容。对于
用户
列表也是如此。使用
realloc
分配准确的用户数。这并不能处理最坏的情况,但是如果用户名不都是20个字符,你就可以了。看看这里:如果你不能静态地为200个用户动态分配内存,你会怎么想。通过动态分配,您还可以使用arduino mega获得memory fragmentation.am。当我使用200个条目时,我收到了一个警告。您使用了多少其他变量?警告是什么?或者使用avr objdump创建一个映射文件并查看内存的去向错误是:全局变量使用8096字节(98%)的动态内存,而局部变量使用96字节。最大值为8192字节。可用内存不足,可能会出现稳定性问题。