Bonjour à tous
Dans un sketch d'un autre post, il y a un tableau de Strings (oui c'est mal, mais c'est pas la question :P)
String menuItems[] = {"TERRARIUM 1", "TERR (...) };
Et plus loin ceci :
(sizeof(menuItems) / sizeof(String)) - 1
retournant normalement le nombre d'éléments du tableau. Mais String étant une classe avec allocation dynamique de mémoire en fonction de la longueur de la chaîne, comment cela peut-il fonctionner ?
La chaîne de caractère est certes allouée mais l'instance contient seulement son adresse (voir WString.h dans hardware/arduino/avr/cores/arduino) :
protected:
char *buffer; // the actual char array
unsigned int capacity; // the array length minus one (for the '\0')
unsigned int len; // the String length (not counting the '\0')
Donc la taille d'un objet String est fixe.
Mais c'est toujours une mauvaise idée d'utiliser String sur un petit processeur avec peu de mémoire.
@+
Bien vu ! C'est donc juste un tableau de pointeurs. Oui utiliser String, je suis d'accord avec toi, je voulais juste comprendre.