使用g++編譯器擴大程序可用棧空間


如題,在寫一些程序的時候我們有時會開一個比較大的數組或進行層數較多的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

意思:

  1. 打開O2優化 (-O2)
  2. 打開“顯示最多警告信息” (-Wall)
  3. 開大棧空間限制到 512MB (-Wl,--stack=536870912)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM