[問題] stack v.s. heap sizes

看板C_and_CPP (C/C++)作者 (修行)時間16年前 (2009/09/12 20:14), 編輯推噓3(308)
留言11則, 5人參與, 最新討論串1/3 (看更多)
在Windows上stack最大可以設到32MB, heap卻可以設定到2GB。 請問為何這兩個限制大小差那麼多? 靜態變數(在stack)不是效能比較好嗎!? 為什麼需要配置大量空間不建議配置在stack? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.221.79

09/12 20:54, , 1F
靜態變數!?
09/12 20:54, 1F

09/12 21:08, , 2F
應該說"靜態記憶體配置的變數"。
09/12 21:08, 2F

09/12 22:12, , 3F
stack是給local var用的, 通常幾十KB就夠了
09/12 22:12, 3F

09/12 22:13, , 4F
heap是給malloc/new用的, 使用量視AP而定
09/12 22:13, 4F

09/12 23:06, , 5F
heap可動態釋放!不過stack效能較好到是事實巴
09/12 23:06, 5F

09/12 23:15, , 6F
這是邏輯上的思考, 通常 stack 是用來存取 function 內
09/12 23:15, 6F

09/12 23:15, , 7F
的變數, 若 function 內的 local var 過大, 那麼這個
09/12 23:15, 7F

09/12 23:16, , 8F
function 勢必不夠靈活, 光 recursive 沒幾次再大的
09/12 23:16, 8F

09/12 23:17, , 9F
stack 也不夠用, 而這類超大空間的配置就使用上也大多
09/12 23:17, 9F

09/12 23:17, , 10F
只需要配置很少的次數, 因此放在 heap 是合理且好的作法
09/12 23:17, 10F

09/14 20:16, , 11F
謝謝樓上。
09/14 20:16, 11F
文章代碼(AID): #1Agv2wBX (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Agv2wBX (C_and_CPP)