il prima colonna dei numeri a fianco alla dichiarazione della variabile "a" é l'occupazione della memoria RAM usando un ESP32
La seconda colonna usando un Arduino UNO
Per quanto riguarda la colonna del UNO, è tutto logico, invece per ESP32, non capisco quando "a" è dichiarata come double (64bits) occupa 8 bytes di piu rispetto a float(32bits).
Perché?
Perchè Arduino Uno/Nano etc. sono a 8 bits e il double "non esiste", il double è uguale a float,
mentre su Esp32 il double "esiste" ed è più grande di float
Come dice Guglielmo basta una sizeof() per vedere la vera occupazione di un double.
Ma nel codice che hai provato hai tenuto conto che ... c'e' altro ??
Se provo questo a me la memoria corrisponde a quello che ti aspetti: