[問題] DP建表建議宣告於全域?

看板C_and_CPP作者 (嗯嗯搭啦)時間8年前 (2015/08/29 10:46), 編輯推噓9(908)
留言17則, 10人參與, 最新討論串1/1
在做高中生程式解題系統的題目時, 碰到一題大數加法,卡在run error很久, 後來發現將DP建表從main宣告改成宣告於全域範圍就解決了。 查了一下得到"DP建表建議宣告於全域,以免堆疊溢滿"的結論, 程式基礎不太好,原先以為這只是可視範圍的差異,想請問一下為什麼會有這樣的結果? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.70.6.223 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440816418.A.F2A.html

08/29 10:58, , 1F
這句話有問題, 應該是太大的表格才建議宣告全域
08/29 10:58, 1F

08/29 10:59, , 2F
宣告在 main 裡表示它會佔用 main 的堆疊空間
08/29 10:59, 2F

08/29 10:59, , 3F
但一般程式能用的堆疊空間是很小的
08/29 10:59, 3F

08/29 11:00, , 4F
宣告為全域則它會在執行檔內設定, 載入後會進到另外的地方
08/29 11:00, 4F

08/29 11:02, , 5F
區域變數放在stack, stack是有固定大小的, 通常不大.
08/29 11:02, 5F

08/29 11:02, , 6F
全域變數會放在data section, 就不會受限於stack size.
08/29 11:02, 6F

08/29 20:43, , 7F
與放在哪個section關係較小 主要是因為執行時放在heap
08/29 20:43, 7F

08/29 21:10, , 8F
alloc的才是在heap吧
08/29 21:10, 8F

08/29 22:08, , 9F
高中生程式會學到堆疊?教debug?
08/29 22:08, 9F

08/29 22:14, , 10F
樓上那個是 ZeroJudge 的名字....
08/29 22:14, 10F

08/30 09:19, , 11F
應該是不會教debug,堆疊的話看老師教的難度和學生程
08/30 09:19, 11F

08/30 09:19, , 12F
08/30 09:19, 12F

08/30 09:30, , 13F
概論有,資料結構的書也有,差就在沒教這麼深只講理論
08/30 09:30, 13F

08/30 15:23, , 14F
全域變數就是放在data section 上面有人說放heap是錯的
08/30 15:23, 14F

08/30 16:50, , 15F
有啊 資訊學科能力競賽
08/30 16:50, 15F

08/30 19:27, , 16F
對不起我講錯了 確實是data或bss而不是heap
08/30 19:27, 16F

09/03 04:58, , 17F
我覺得直接認命點丟heap不就好了...傷那麼多腦筋幹嘛XD
09/03 04:58, 17F
文章代碼(AID): #1LuHqYyg (C_and_CPP)