注意,星級公眾號,是的,令人興奮的內容作者:StrongHuang微信公眾號:StrongerHuang堆棧對于程序非常重要,程序可以快速運行,在堆棧中扮演非常重要的角色,但是您知道堆棧? 1我們都知道堆棧位于RAM中。
現在,MCU的RAM相對較大(幾十或幾百個K),因此分配的堆棧足夠大,許多人并沒有過多地關注此堆棧的大小。
但是,MCU的RAM過去很小,甚至不到1K,因此以前的工程師更加關注堆棧的大小。
對于小型項目,也許我們不需要關心堆棧大小。
但是,如果項目很大,則應注意它。
您的堆棧大小設置不合理,可能會導致故障。
如果您想了解堆棧的大小,則需要了解堆棧的功能。
讓每個人都對堆棧有更多了解。
2在堆棧的基本知識上,讓我們看一下兩個經典知識。
1.程序內存分配C / C編譯程序占用的內存分為以下幾部分:堆棧區(stack):由編譯器自動分配和釋放,存儲函數參數值,局部變量值等。
其操作是類似于數據結構中的堆棧。
堆:通常由程序員分配和釋放,如果程序員不釋放它,則在程序結束時OS可能會回收它。
請注意,它與數據結構中的堆不同,并且分配方法類似于鏈表。
全局區域(靜態區域)(靜態):全局變量和靜態變量的存儲放在一起,初始化的全局變量和靜態變量在一個區域中,未初始化的全局變量和未初始化的靜態變量彼此相鄰。
一個地區。
程序結束后由系統釋放。
文本常量區域:常量字符串放置在此處,并在程序結束后由系統釋放。
程序代碼區:存儲功能體的二進制代碼。
2.經典示例程序int a = 0; //全局初始化區域char * p1; //全局未初始化區域main(){int b; // stack char s [] =“ abc” ;; //堆棧char * p2; //堆棧char * p3 =" 123456&quot ;; // 123456