在做stm8單片機項目的數據遇到棧不夠用的問題。
在主函數裏面寫了太多的變量,重新定義一個函數來做相關的操作就好。(這樣在相應的操作進行時才把相關的變量拷貝到棧中)
全局變量:
.BSS段:存放的是未初始化的全局變量和靜態變量(至於具體存在哪裏要看鏈接腳本)。
但是未初始化的全局變量不是可執行模塊的一部分,只有當使用它們的程序被調用時(即執行時),才分配空間,聲明或定義時並不分配。未初始化的全局變量在運行時被初始化爲0。也就是說.BSS段最終還是存在.DATA段裏面(不知道這樣理解對不對。)
局部變量:
編譯器按照內存地址遞減的方式來給變量分配內存
int a[10];
for (int i = 0; i <= 10; ++i)
{
a[i] = 0;
}比如上面的例子運行之後會進入死循環,其實就是編譯器按照內存地址遞減的方式來給變量分配內存的結果。