⑴ 什么是堆栈
堆是堆(heap),栈是栈(stack),虽然堆栈(heap and stack)有相似之处,但不要混为一谈。
本质上讲,堆(heap)是一种数据结构,是纯软件的实现。堆基于一定的程序基础(例如在操作系统),它更加偏向于软件实现动态的内存管理,令程序运行时根据所需来动态申请/释放内存。
而栈(stack)既存在软件实现又存在硬件实现。栈本质上是一种简单的先进先出结构,主要目的是为程序运行时保存关键的现场数据,尤其适合于(嵌套式)中断的配合。几历配腔乎肢衫所有的微控制器/卖告微处理器都具备硬件栈。而软件/操作系统中又可以进一步建立软件栈,为线程建立专用的存储区域。
⑵ C璇瑷涓鐨勬爤銆佸爢鏄浠涔堬紵
C璇瑷涓鐨勫爢鍜屾爤閮芥槸涓绉嶆暟鎹椤规寜搴忔帓鍒楃殑鏁版嵁缁撴瀯銆
鏍堝氨鍍忚呮暟鎹鐨勬《鎴栫卞瓙
鎴戜滑鍏堜粠澶у舵瘮杈冪啛鎮夌殑鏍堣磋捣鍚э紝瀹冩槸涓绉嶅叿鏈夊悗杩涘厛鍑烘ц川鐨勬暟鎹缁撴瀯锛屼篃灏辨槸璇村悗瀛樻斁鐨勫厛鍙栵紝鍏堝瓨鏀剧殑鍚庡彇銆
杩欏氨濡傚悓鎴戜滑瑕佸彇鍑烘斁鍦ㄧ卞瓙閲岄潰搴曚笅鐨勪笢瑗匡紙鏀惧叆鐨勬瘮杈冩棭鐨勭墿浣擄級锛屾垜浠棣栧厛瑕佺Щ寮鍘嬪湪瀹冧笂闈㈢殑鐗╀綋锛堟斁鍏ョ殑姣旇緝鏅氱殑鐗╀綋锛夈
鍫嗗儚涓妫靛掕繃鏉ョ殑鏍
鑰屽爢灏变笉鍚屼簡锛屽爢鏄涓绉嶇粡杩囨帓搴忕殑鏍戝舰鏁版嵁缁撴瀯锛屾瘡涓缁撶偣閮芥湁涓涓鍊笺
閫氬父鎴戜滑鎵璇寸殑鍫嗙殑鏁版嵁缁撴瀯锛屾槸鎸囦簩鍙夊爢銆傚爢鐨勭壒鐐规槸鏍圭粨鐐圭殑鍊兼渶灏忥紙鎴栨渶澶э級锛屼笖鏍圭粨鐐圭殑涓や釜瀛愭爲涔熸槸涓涓鍫嗐
鐢变簬鍫嗙殑杩欎釜鐗规э紝甯哥敤鏉ュ疄鐜浼樺厛闃熷垪锛屽爢鐨勫瓨鍙栨槸闅忔剰锛岃繖灏卞傚悓鎴戜滑鍦ㄥ浘涔﹂嗙殑涔︽灦涓婂彇涔︺
铏界劧涔︾殑鎽嗘斁鏄鏈夐『搴忕殑锛屼絾鏄鎴戜滑鎯冲彇浠绘剰涓鏈鏃朵笉蹇呭儚鏍堜竴鏍凤紝鍏堝彇鍑哄墠闈㈡墍鏈夌殑涔︼紝涔︽灦杩欑嶆満鍒朵笉鍚屼簬绠卞瓙锛屾垜浠鍙浠ョ洿鎺ュ彇鍑烘垜浠鎯宠佺殑涔︺
鎵╁睍璧勬枡锛
鍏充簬鍫嗗拰鏍堝尯鍒鐨勬瘮鍠
浣跨敤鏍堝氨璞℃垜浠鍘婚キ棣嗛噷鍚冮キ锛屽彧绠$偣鑿滐紙鍙戝嚭鐢宠凤級銆佷粯閽便佸拰鍚冿紙浣跨敤锛夛紝鍚冮ケ浜嗗氨璧帮紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗囧伐浣滃拰娲楃椼佸埛閿呯瓑鎵灏惧伐浣滐紝浠栫殑濂藉勬槸蹇鎹凤紝浣嗘槸鑷鐢卞害灏忋
浣跨敤鍫嗗氨璞℃槸鑷宸卞姩鎵嬪仛鍠滄㈠悆鐨勮彍鑲达紝姣旇緝楹荤儲锛屼絾鏄姣旇緝绗﹀悎鑷宸辩殑鍙e懗锛岃屼笖鑷鐢卞害澶с
鍙傝冭祫鏂欐潵婧愶細鐧惧害鐧剧-鍫嗘爤