Estaba probando el siguiente código en mi placa STM32, pero no podía entender cómo se asignaba la matriz en la pila.
Supongo que hay 200 bytes de memoria en STM32.
Aquí está el código:
void test1()
{
char data[1000]={0};
}
void test2()
{
char data[1000];
data[999] = 50;
lcdAdjustBacklight(data[999]);//just adjust back light
}
Entonces, cuando agrego test1()
en mi función main()
, el programa se bloqueará cuando se ejecute en la MCU. Obviamente, la pila está desbordada. Sin embargo, cuando agrego test2()
en main()
, la MCU procesa el programa muy bien. Me pregunto cómo funciona la asignación de pila para una matriz sin inicializar.
Editar: Finalmente lo descubrí. Verifiqué el código de ensamblaje, en test1
el compilador asignó la memoria, de hecho. Pero en test2
, el compilador optimizó la matriz, por lo que no le asigna memoria.