如题,在写一些程序的时候我们有时会开一个比较大的数组或进行层数较多的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)

Linux Debugging(一): 使用反汇编理解C++程序函数调用栈

拿到CoreDump后,如果看到的地址都是????,那么基本上可以确定,程序的栈被破坏掉了.GDB也是使用函数的调用栈去还原"事故现场"的.因此理解函数调用栈,是使用GDB进行现场 ...

20深入理解C指针之---程序的栈和堆

一.程序在内存中的存储分段: 程序段主要包括:code段.data段.内核段.堆段和栈段 1.code段: 1).存储程序汇编后程序指令 2).此段中的数据是只读的 3).不能用于存储变量,可以存储常 ...

《浏览器工作原理与实践》 <12>栈空间和堆空间:数据是如何存储的?

对于前端开发者来说,JavaScript 的内存机制是一个不被经常提及的概念 ,因此很容易被忽视.特别是一些非计算机专业的同学,对内存机制可能没有非常清晰的认识,甚至有些同学根本就不知道 JavaSc ...

Leetcode Lect3 内存中的栈空间与堆空间

内存中的栈空间与堆空间 我们通常所说的内存空间,包含了两个部分:栈空间(Stack space)和堆空间(Heap space) 当一个程序在执行的时候,操作系统为了让进程可以使用一些固定的不被其他进 ...

更改Linux默认栈空间的大小

有时候在Linux写C++程序处理大量的数据,程序内部需要分配很大的数组来存放一些数据,但有时候分配的数组太大的话运行时会出现段错误.这种情况可能是分配的数组大小超过了Linux系统的默认栈空间的大小 ...

《Cortex-M0权威指南》之体系结构---栈空间操作

转载请注明来源:cuixiaolei的技术博客 栈空间作为一种存储器使用机制,是"先入先出"的结构,在系统空间中用作临时数据的存储.栈空间操作的关键之一为栈指针寄存器,每次执行栈操 ...

Linux学习笔记4——函数调用栈空间的分配与释放

一.函数执行时使用栈空间作为自己的临时栈,3种方式决定编译器清空栈的方式:__stdcall. __fastcall.__cdecl 1.__stdcall表示每个调用者负责清空自己调用的函数的临时栈 ...

java虚拟机 jvm 出入java栈 栈空间内存分配

java栈空间是一块线程私有的内存空间,java堆和程序数据密切相关,那么java栈就是和线程执行密切相关.线程最基本的执行行为就是函数的调用.每次函数调用其实是通过java栈传递数据的. 数据结构中 ...

随机推荐

.Net Core Linux centos7行—安装nginx,运行静态网站

使用编译安装方式安装nginx Nginx下载地址:http://nginx.org/en/download.html.下载Stable version(稳定版就好).当前稳定版:http://ngi ...

nfs的使用

1.安装命令:sudo apt-get install nfs-kernel-server ;   sudo apt-get install nfs-common; 2.执行命令:mkdir /(目录 ...

zepto源码--classRE、maybeAddPx、children、defaultDisplay--学习笔记

1.classRE 对获取className的操作,进行缓存.如果缓存中有,直接读取缓存中的值,如果没有,则先进行缓存的存储,再读取值. 利用前面变量定义的classCache={}进行缓存的操作,如 ...

改变seekbar的游标图片大小

url: http://stackoverflow.com/questions/9699951/changing-size-of-seekbar-thumb The most flexible way ...

STS(Spring Tool Suite)使用前准备

sts 的基础框架拿的eclipse的,你可以理解为eclipse + spring插件的高级升华版.在使用上可以很大限度的参考eclipse的操作. 首先,调整字体. 中文很麻烦的,因为编码问题.习 ...

它们的定义TextView使之具有跑马灯的效果

一.引入问题 使用通用textview快乐效应,焦点事件不启动滚动,button目前的焦点事件,但丑,因此,需要定制TextView 天生焦点 个textview FocusedTextView.ja ...

TCP的三次握手 与 四次挥手

TCP的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行 主要步骤: 服务器一定处于Listen状态,否则客户端发过来的连接会被拒绝.注:服务器和客户端的角色是相对的 ...

《剑指offer》二叉搜索树的后序遍历序列

本题来自 二叉搜索树的后序遍历序列 题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字 ...

[Leetcode] combination sum ii 组合之和

Given a collection of candidate numbers ( C ) and a target number ( T), find all unique combinations ...

【Kruskal+dfs】BZOJ1016- [JSOI2008]最小生成树计数

[题目大意] 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树. [思路] 拖欠了三个月整(?)的题目,搞出来弄掉了……本年度写的时候姿势最丑 ...

g++ linux 编译开栈_使用g++编译器扩大程序可用栈空间相关推荐

  1. g++ linux 编译开栈_方舟编译器编译hello world踩坑全记录

    闲来无事,看到方舟编译器完整开源,于是打算拿来试着编译一个东西来,接下来把踩过的一些坑记录一下. 参考文档 方舟编译器的官网是 OpenArkCompiler​www.openarkcompiler. ...

  2. g++ linux 编译开栈_linux gcc和g++版本的修改

    ##编译的时候容易遇到:unsupported GNU version! gcc versions later than 6 are not supported这样的错误.所以我们要更改系统的gcc和 ...

  3. g++ linux 编译开栈_linux下使用g++编译cpp工程

    C++编程中相关文件后缀 1.单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的C++程序的代码: 1 /*helloworld.cpp*/ 2 #includ ...

  4. g++ linux 编译开栈_使用 linux kernel +busybox 定制linux系统

    写在开头: 本来是想使用linux kernel +busybox 制作一个教程的,后来快要结束的时候,死活找不到硬盘,我了解很多文章都有类似的,但是没有谈到硬盘找不到问题,最后历经艰辛,终于把问题解 ...

  5. g++ linux 编译开栈_Linux下编写C++服务器(配置C++编译调试环境)

    Linux下编写C++服务器(配置C++编译调试环境) 安装好linux虚拟机,确定能上网后,我们可以开始编写C++程序了,但在这之前我们需要下载编译器和调试器 下载gcc 1.在终端输入yum se ...

  6. arm64入栈出栈_【iOS内功】ARM黑魔法—栈桢的入栈和出栈

    栈桢之谜 调用一个子函数,在内存上会入一个新的栈桢.子函数执行完了,当前栈桢会出栈.在运行时,栈桢的出栈和入栈的逻辑是怎么实现的呢? 这是一个很有趣的问题,也是一个重要的知识点,它是排查疑难Crash ...

  7. gcc g++ Linux下动态库_静态库

    关于Unix静态库和动态库的分析 基本概念 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在 ...

  8. python编译为机器码_通过 GraalVM 将 Java 程序编译成本地机器码!

    前言 2018年4月,Oracle Labs新公开了一项黑科技:Graal VM. 这是一个在HotSpot虚拟机基础上增强而成的跨语言全栈虚拟机,可以作为"任何语言"的运行平台使 ...

  9. web全栈架构师所需技术栈_统一架构–一种构建全栈应用程序的简单方法

    web全栈架构师所需技术栈 Modern full-stack apps – like single-page apps or mobile apps – usually have six layer ...

最新文章

  1. A SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene40' does not exist.
  2. MeteoInfoLab脚本示例:Streamline流线图
  3. 如何去使用Python爬虫来爬取B站的弹幕数据?
  4. Tensorflow-gpu的方式
  5. MPU和MCU的区别和选择
  6. tiny core linux ftp,tinycore 的基本搭建,开机时间只需要1-3秒
  7. win2003域迁移实战记录
  8. 广义注意力- saliency map 关注图、gaze、Att
  9. EasyX画动态时钟
  10. Altium Designer 21/AD21程序安装及注意事项
  11. 天正坐标标注怎么不显示_[CAD标注坐标如何显示XY]cad坐标标注不显示
  12. 网络安全——C段扫描
  13. sublime中PyV8问题
  14. 使用xftp怎么向服务器传输文件,如何使用文件传输软件Xftp
  15. 台式计算机显卡最高温度多少,台式机的正常温度是多少
  16. 你努力工作会让老板感动吗?
  17. Redis主从复制原理
  18. 代码赏析:子窗口对于键盘和鼠标的响应
  19. AcWing 487. 金明的预算方案 (有依赖关系的背包问题)
  20. 利用茉莉机器人接口开发一个简单的安卓机器人app

热门文章

  1. 【记录】启用Windows 10下的linux子系统
  2. CCF 201403-1 相反数
  3. Jmeter获取性能指标
  4. sql视图语句_SQL视图:Replace View语句的示例语法
  5. 软件设计师 一年考几次_一年写106篇文章如何帮助我成长为设计师
  6. python png 背景透明_python – Pygame:在png图像中将所有白色像素转换为完全透明...
  7. 说说C#的async和await
  8. jQuery Mobile教程:jQuery Mobile基本事件
  9. 2个js实现图片轮播效果(用)
  10. 动态添加控件[可重复同一控件]