Programmation pour mon Arduino (dans une sorte de mélange de C/C++), j'ai remarqué quelque chose d'étrange.Problème de mémoire C/C++?
Chaque fois que je communique via le port série, je surveille l'utilisation de la SRAM. Normalement, il varie entre 300 ~ 400 octets. Cependant, après avoir ajouté une nouvelle routine (voir ci-dessous), j'ai remarqué qu'il a toujours sauté de 300 ~ 400 octets de mémoire libre à EXACTEMENT 1023. Mon intuition est qu'il y a un problème.
Voici la nouvelle routine
void NewRoutine(char *cmdd){
GSM.print(cmdd);
GSM.print(26, BYTE);
GSM.print(endl); // <-- added later
Serial.print(availableMemory());
}
Et c'est le MemoryCheck de routine
int availableMemory() {
int size = 1024;
byte *buf;
while ((buf = (byte *) malloc(--size)) == NULL);
free(buf);
return size;
}
S'il vous plaît noter ceci: D'abord, il ne fonctionne pas. Après avoir ajouté la commande endl, cela a fonctionné comme par magie, mais j'ai remarqué le problème de mémoire.
Quelqu'un at-il des idées pour une solution de contournement?
Bienvenue dans Stack Overflow! –
Mike, je suggère d'éviter d'utiliser malloc dans une machine RAM 1K. Vous devriez pouvoir vous en sortir sans l'utiliser dans cette situation. :-) –