STM8S的堆和棧說明

參考鏈接:對單片機堆棧的理解
STM8數據手冊給出了堆棧的位置及大小。
棧是從高到低分配,堆是從低到高分配。
在這裏插入圖片描述
堆棧是內存中一段連續的存儲區域,用來保存一些臨時數據。然後堆棧又分爲棧區(stack)和堆區(Heap)。棧區(stack)保存一些局部變量、臨時變量,由系統自動分配空間;堆區(Heap)由用戶自己分配,比如使用malloc開闢空間,使用free釋放空間。棧上的空間是自動分配自動回收的,所以棧上的數據的生存週期只是在函數的運行過程中,運行後就釋放掉,不可以再訪問。而堆上的數據只要程序員不釋放空間,就一直可以訪問到,不過缺點是一旦忘記釋放會造成內存泄露。

棧區和堆區的大小IAR默認是各分配256個字節,堆棧總共是512個字節,具體如何分配看個人實際情況,比如不開闢內存空間,可以考慮把堆區空間減少,棧區空間增大,以防止由於定義變量過多造成棧區空間溢出:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章