⑴ 什麼是堆棧
堆是堆(heap),棧是棧(stack),雖然堆棧(heap and stack)有相似之處,但不要混為一談。
本質上講,堆(heap)是一種數據結構,是純軟體的實現。堆基於一定的程序基礎(例如在操作系統),它更加偏向於軟體實現動態的內存管理,令程序運行時根據所需來動態申請/釋放內存。
而棧(stack)既存在軟體實現又存在硬體實現。棧本質上是一種簡單的先進先出結構,主要目的是為程序運行時保存關鍵的現場數據,尤其適合於(嵌套式)中斷的配合。幾歷配腔乎肢衫所有的微控制器/賣告微處理器都具備硬體棧。而軟體/操作系統中又可以進一步建立軟體棧,為線程建立專用的存儲區域。
⑵ C璇璦涓鐨勬爤銆佸爢鏄浠涔堬紵
C璇璦涓鐨勫爢鍜屾爤閮芥槸涓縐嶆暟鎹欏規寜搴忔帓鍒楃殑鏁版嵁緇撴瀯銆
鏍堝氨鍍忚呮暟鎹鐨勬《鎴栫卞瓙
鎴戜滑鍏堜粠澶у舵瘮杈冪啛鎮夌殑鏍堣磋搗鍚э紝瀹冩槸涓縐嶅叿鏈夊悗榪涘厛鍑烘ц川鐨勬暟鎹緇撴瀯錛屼篃灝辨槸璇村悗瀛樻斁鐨勫厛鍙栵紝鍏堝瓨鏀劇殑鍚庡彇銆
榪欏氨濡傚悓鎴戜滑瑕佸彇鍑烘斁鍦ㄧ卞瓙閲岄潰搴曚笅鐨勪笢瑗匡紙鏀懼叆鐨勬瘮杈冩棭鐨勭墿浣擄級錛屾垜浠棣栧厛瑕佺Щ寮鍘嬪湪瀹冧笂闈㈢殑鐗╀綋錛堟斁鍏ョ殑姣旇緝鏅氱殑鐗╀綋錛夈
鍫嗗儚涓媯靛掕繃鏉ョ殑鏍
鑰屽爢灝變笉鍚屼簡錛屽爢鏄涓縐嶇粡榪囨帓搴忕殑鏍戝艦鏁版嵁緇撴瀯錛屾瘡涓緇撶偣閮芥湁涓涓鍊箋
閫氬父鎴戜滑鎵璇寸殑鍫嗙殑鏁版嵁緇撴瀯錛屾槸鎸囦簩鍙夊爢銆傚爢鐨勭壒鐐規槸鏍圭粨鐐圭殑鍊兼渶灝忥紙鎴栨渶澶э級錛屼笖鏍圭粨鐐圭殑涓や釜瀛愭爲涔熸槸涓涓鍫嗐
鐢變簬鍫嗙殑榪欎釜鐗規э紝甯哥敤鏉ュ疄鐜浼樺厛闃熷垪錛屽爢鐨勫瓨鍙栨槸闅忔剰錛岃繖灝卞傚悓鎴戜滑鍦ㄥ浘涔﹂嗙殑涔︽灦涓婂彇涔︺
鉶界劧涔︾殑鎽嗘斁鏄鏈夐『搴忕殑錛屼絾鏄鎴戜滑鎯沖彇浠繪剰涓鏈鏃朵笉蹇呭儚鏍堜竴鏍鳳紝鍏堝彇鍑哄墠闈㈡墍鏈夌殑涔︼紝涔︽灦榪欑嶆満鍒朵笉鍚屼簬綆卞瓙錛屾垜浠鍙浠ョ洿鎺ュ彇鍑烘垜浠鎯寵佺殑涔︺
鎵╁睍璧勬枡錛
鍏充簬鍫嗗拰鏍堝尯鍒鐨勬瘮鍠
浣跨敤鏍堝氨璞℃垜浠鍘婚キ棣嗛噷鍚冮キ錛屽彧綆$偣鑿滐紙鍙戝嚭鐢寵鳳級銆佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨璧幫紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗囧伐浣滃拰媧楃椼佸埛閿呯瓑鎵灝懼伐浣滐紝浠栫殑濂藉勬槸蹇鎹鳳紝浣嗘槸鑷鐢卞害灝忋
浣跨敤鍫嗗氨璞℃槸鑷宸卞姩鎵嬪仛鍠滄㈠悆鐨勮彍鑲達紝姣旇緝楹葷儲錛屼絾鏄姣旇緝絎﹀悎鑷宸辯殑鍙e懗錛岃屼笖鑷鐢卞害澶с
鍙傝冭祫鏂欐潵婧愶細鐧懼害鐧劇-鍫嗘爤