使用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
IDE 说明
一般在IDE中,都会有一个设置页面叫做“编译选项”,在这里加入一句 -Wl,--stack=SIZE
即可
Bloodshed DEV-C++ 5.11 开大栈空间教程
上方工具栏 工具[T] 编译选项[C] 勾选“编译时加入以下命令”并加入一句 -Wl,--stack=SIZE
点击下方“确定[O]”即可
信息学竞赛党(OIer,ACMer)福利
个人在平时训练中会在编译器加入的一句话是:
-O2 -Wall -Wextra -Wl,--stack=536870912
意思:
- 打开O2优化 (
-O2
) - 打开“显示最多警告信息” (
-Wall
) - 开大栈空间限制到
512MB
(-Wl,--stack=536870912
)
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 领域模型应用
· 记一次 ADL 导致的 C++ 代码编译错误
· MySQL查询执行顺序:一张图看懂SQL是如何工作的
· 为什么PostgreSQL不自动缓存执行计划?
· 于是转身独立开发者
· C#/.NET/.NET Core优秀项目和框架2025年6月简报
· Cursor 1.2重磅更新,这个痛点终于被解决了!
· C#开发的Panel滚动分页控件(滑动版) - 开源研究系列文章
· 上周热点回顾(6.30-7.6)
· .NET AI 模板