如題,在寫一些程序的時候我們有時會開一個比較大的數組或進行層數較多的dfs。這時候,程序常常會報錯,於是就很無奈。
其實,雖然Windows給程序的默認棧空間比較小,我們還是有辦法去擴大這個程序運行棧空間的。
棧空間限制在何處?
對於 Linux,在系統設置(本文不做討論,后續可能會補坑)
對於 Windows,在 ".exe" 可執行文件中。
Windows + g++ 擴大程序可用棧空間 方法
簡單來說,就是在編譯的時候加入一條形如 -Wl,--stack=SIZE
的指令即可。
SIZE 的單位:byte
例如,我要進行單文件編譯,文件名為 a.cpp
,給予該可執行文件最大 256MB
的棧空間。
指令:
g++ a.cpp -o a.exe -Wl,--stack=268435456
\(※ \space 268435456 =256 \times 1024 \times 1024\)
IDE 說明
一般在IDE中,都會有一個設置頁面叫做“編譯選項”,在這里加入一句 -Wl,--stack=SIZE
即可
Bloodshed DEV-C++ 5.11 開大棧空間教程
上方工具欄 \(\rightarrow\) 工具[T] \(\rightarrow\) 編譯選項[C] \(\rightarrow\) 勾選“編譯時加入以下命令”並加入一句 -Wl,--stack=SIZE
\(\rightarrow\) 點擊下方“確定[O]”即可
信息學競賽黨(OIer,ACMer)福利
個人在平時訓練中會在編譯器加入的一句話是:
-O2 -Wall -Wextra -Wl,--stack=536870912
意思:
- 打開O2優化 (
-O2
) - 打開“顯示最多警告信息” (
-Wall
) - 開大棧空間限制到
512MB
(-Wl,--stack=536870912
)