看板 C_and_CPP 關於我們 聯絡資訊
在做高中生程式解題系統的題目時, 碰到一題大數加法,卡在run error很久, 後來發現將DP建表從main宣告改成宣告於全域範圍就解決了。 查了一下得到"DP建表建議宣告於全域,以免堆疊溢滿"的結論, 程式基礎不太好,原先以為這只是可視範圍的差異,想請問一下為什麼會有這樣的結果? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.70.6.223 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440816418.A.F2A.html
LPH66: 這句話有問題, 應該是太大的表格才建議宣告全域 08/29 10:58
LPH66: 宣告在 main 裡表示它會佔用 main 的堆疊空間 08/29 10:59
LPH66: 但一般程式能用的堆疊空間是很小的 08/29 10:59
LPH66: 宣告為全域則它會在執行檔內設定, 載入後會進到另外的地方 08/29 11:00
chchwy: 區域變數放在stack, stack是有固定大小的, 通常不大. 08/29 11:02
chchwy: 全域變數會放在data section, 就不會受限於stack size. 08/29 11:02
dritchie: 與放在哪個section關係較小 主要是因為執行時放在heap 08/29 20:43
jaid: alloc的才是在heap吧 08/29 21:10
stupid0319: 高中生程式會學到堆疊?教debug? 08/29 22:08
suhorng: 樓上那個是 ZeroJudge 的名字.... 08/29 22:14
TobyH4cker: 應該是不會教debug,堆疊的話看老師教的難度和學生程 08/30 09:19
TobyH4cker: 度 08/30 09:19
TobyH4cker: 概論有,資料結構的書也有,差就在沒教這麼深只講理論 08/30 09:30
Arton0306: 全域變數就是放在data section 上面有人說放heap是錯的 08/30 15:23
longlongint: 有啊 資訊學科能力競賽 08/30 16:50
dritchie: 對不起我講錯了 確實是data或bss而不是heap 08/30 19:27
Killercat: 我覺得直接認命點丟heap不就好了...傷那麼多腦筋幹嘛XD 09/03 04:58