zoukankan      html  css  js  c++  java
  • 使用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 imes 1024 imes 1024)

    IDE 说明

    一般在IDE中,都会有一个设置页面叫做“编译选项”,在这里加入一句 -Wl,--stack=SIZE 即可

    Bloodshed DEV-C++ 5.11 开大栈空间教程

    上方工具栏 ( ightarrow) 工具[T] ( ightarrow) 编译选项[C] ( ightarrow) 勾选“编译时加入以下命令”并加入一句 -Wl,--stack=SIZE ( ightarrow) 点击下方“确定[O]”即可

    信息学竞赛党(OIer,ACMer)福利

    个人在平时训练中会在编译器加入的一句话是:

    -O2 -Wall -Wextra -Wl,--stack=536870912
    

    意思:

    1. 打开O2优化 (-O2)
    2. 打开“显示最多警告信息” (-Wall)
    3. 开大栈空间限制到 512MB (-Wl,--stack=536870912)
  • 相关阅读:
    前端错误监控上报公共方法,可在父页面及iframe子页面同时使用
    python3.7爬取墨菲定律保存在本地txt
    实现一个左滑删除功能
    用docsify快速构建文档,并用GitHub Pages展示
    最常用的快捷键总结
    有价值的帖子或博客链接
    解决8080端口占用问题
    用gulp构建你的前端项目
    移动端右侧栏导航面板
    自己封装一个弹框插件
  • 原文地址:https://www.cnblogs.com/hkxadpall/p/gplusplus_AutoStackMemory.html
Copyright © 2011-2022 走看看