Lio con tamaño variables char

Ya que estábamos charlando sobre arrays y punteros, sólo puntualizar el cuidado con el que hay que tratarlos. Justamente este viernes me he tirado toda una mañana depurando una aplicación que ando realizando. El caso es que tras muchos Serial.print en diferentes puntos, me di cuenta de que estaba continuamente reiniciándose. Al final resultó ser un error garrafal con un array que declaré como un buffer de pantalla, algo así como byte bufferpantalla[65], pero que tenía que inicializar fuera del objeto donde lo creé por tratarse de un miembro estático; así que en las inicializaciones lo hice a la ligera:
byte pantalla::bufferpantalla[65]="";
¡¡¡TOMA YA!!! Supongo que pensé (mejor dicho, no pensé :blush:) algo así como "escribo una cadena vacía en el buffer y ya está: el buffer contendrá \0 y otros 64 bytes que me da igual lo que sean", pero ¿qué hice realmente? Cuando se asigna una cadena entre comillas, digamos que lo que el compilador hace es imprimir esa cadena en una zona de memoria y asignar la dirección de donde la ha escrito. Por lo tanto, por mucho que yo le diga que bufferpantalla tiene longitud de 65, lo que estoy asignando al puntero bufferpantalla es realmente el espacio reservado para una cadena vacía. Resultado: cuando posteriormente escribo en lo que yo creía que era un hueco de 65 bytes, lo escribía en un hueco de, supongo, 1 byte (el \0 de fin de cadena), machacando 64 bytes correspondientes a vete tú a saber qué. Aún así, me puedo dar por contento con que "sólo" me haya llevado unas 4 horas encontrar el bug, porque por fin tuve un momento de lucidez cuando rastreaba por esa zona de código. Supongo que esto me hará tener un poquito más de cuidado cuando juegue con punteros o arrays, pero he querido poner este post por si alguno "escarmienta en pellejo ajeno" y le puedo evitar un quebradero de cabeza.
Saludos.