stm8數據段和代碼段的鏈接問題

在做stm8單片機項目的數據遇到棧不夠用的問題。

在主函數裏面寫了太多的變量,重新定義一個函數來做相關的操作就好。(這樣在相應的操作進行時才把相關的變量拷貝到棧中)

全局變量:

.BSS段:存放的是未初始化的全局變量和靜態變量(至於具體存在哪裏要看鏈接腳本)。


但是未初始化的全局變量不是可執行模塊的一部分,只有當使用它們的程序被調用時(即執行時),才分配空間,聲明或定義時並不分配。未初始化的全局變量在運行時被初始化爲0。也就是說.BSS段最終還是存在.DATA段裏面(不知道這樣理解對不對。)

局部變量:

編譯器按照內存地址遞減的方式來給變量分配內存

int a[10];
for (int i = 0; i <= 10; ++i)
{
a[i] = 0;
}
比如上面的例子運行之後會進入死循環,其實就是編譯器按照內存地址遞減的方式來給變量分配內存的結果。



發佈了55 篇原創文章 · 獲贊 15 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章