设置c++程序的堆栈空间解决栈溢出问题 程序的静态数据量大的时候,有时候会出现栈溢出问题,往往是程序还没运行算法呢,就down掉了,比如你在创建包含大数组的类(或数据)的时候,栈就溢出了。这是由于系统分配给程序的栈空间太小。 一种方法,就是不要静态分配,用new动态创建,是从堆中分配的,堆的空间足够大,不过记得写析构函数,delete你申请的堆空间。其实这样也挺方便,类结束的时候会自动调用析构函数释放空间。养成"不在栈上定义大数组/大对象"的好习惯很重要,否则再大的栈也会被撑爆的。 当然,如果你不喜欢new,delete的话,还是静态分配(毕竟静态分配有很多好处),那么可以通过改变默认栈空间来解决。   LINK的/STACK选项     /STACK   :reserve[,commit]     reserve:栈总大小     commit:程序开始时系统提供的实际内存量     缺省:1M,8K     参数为0取缺省值     今天在VC++.NET中运行聚类程序,老是说Stack   OverFlow,  后来才发现是栈空间太小了。 单单保存100个网页的数据量就比较大了。  把堆栈的大小已经设置为:     堆栈保留大小为:100000000;     堆栈提交大小为:   100000000;   就没问题了。   设置:项目-> 属性-> 链接器-> system-> 堆栈保留大小/堆栈提交大小     问题解答:

方法一:STACKSIZE   定义.def文件

语法:STACKSIZE reserve[,commit]      reserve:栈的大小;commit:可选项,与操作系统有关,在NT上只一次分配物理内存的大小

方法二:设定/STACK

打开工程,依次操作菜单如下:Project->Setting->Link,在Category 中选中Output,然后 在Reserve中设定堆栈的最大值和commit。

注意:reserve默认值为1MB,最小值为4Byte;commit是保留在虚拟内存的页文件里面,它设置的较 大会使栈开辟较大的值,可能增加内存的开销和启动时间

转载于:https://www.cnblogs.com/leokie/p/4712655.html

设置c++程序的堆栈空间解决栈溢出问题相关推荐

  1. Visual Stdio VS 错误 error : 0xC00000FD: Stack overflow. 更改堆栈空间解决栈溢出问题

    Visual Stdio VS 错误 error : 0xC00000FD: Stack overflow. 更改堆栈空间解决栈溢出问题 参考文章: (1)Visual Stdio VS 错误 err ...

  2. STM32堆栈空间大小设置

    1. 设置堆栈空间大小 在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小.如下图所示的启动代码中,Stack栈的大小为: ...

  3. 微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法

    微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法 参考文章: (1)微信小程序首页index.js获取不到app.js中动态设置的globalDat ...

  4. 32. 脱壳篇-简单带壳的程序、反调试带壳的程序(堆栈平衡原理找OEP、代码段设置断点)

    第一个程序 OEP为46B6F9 PE头位置为46B000到46D000区间,have a nice day! 就是壳 一定要点上箭头指向处,dump改名 清除区段 ,删除壳,保存 第二个程序(市面上 ...

  5. KEIL设置程序起始地址无效解决方法,STM32 IAP程序起始地址

    关键词: KEIL设置程序起始地址无效解决方法 STM32 IAP设置程序起始地址 KEIL设置程序起始地址 MDK设置程序起始地址 KEIL设置ROM地址无效 碰到的问题:为了实现STM32升级固件 ...

  6. 怎样破坏程序的堆栈?

    为什么使用堆栈?  现代计算机被设计成能够理解人们头脑中的高级语言. 在使用高级语言构造程序时最重要的技术是过程(procedure)和函数(function). 从这一点来看, 一个过程调用可以象跳 ...

  7. 如何设置RTOS任务的堆栈大小?

    关注+星标公众号,不错过精彩内容 转自 | 麦克泰技术 基于RTOS的应用中,每个任务都拥有自己的堆栈空间.堆栈设置过大,会造成内存资源浪费:设置过小,可能导致运行过程中的任务栈溢出,从而导致一些奇怪 ...

  8. 计算机驱动空间不够,Win8.1系统如何释放驱动器空间解决可用空间不足问题

    现在越来越多用户安装升级win8.1系统,在操作使用过程中难免遇到一些奇奇怪怪的问题.相信有很多win8.1系统用户会遇到电脑的可用空间不足的提示,用户感到很疑惑,自己的电脑又没装什么软件怎么会这么提 ...

  9. Fortran的堆栈溢出解决方法

    Fortran的堆栈溢出解决方法 每个线程都有自己的堆栈用来保存局部变量和函数调用信息,根据编译器不同,通常大小1~4MB之间,如果用完了就会出现stack overflow exception.此外 ...

最新文章

  1. sap Status状态栏设计
  2. Java面试题2-附答案
  3. Python基础-map/reduce/filter
  4. oracle的oradata,Oracle使用oradata恢复数据库
  5. 后缀自动机SAM详解
  6. 桌面下雪软件测试工程师,Xsnow - 在Ubuntu 18.04及更高版本的桌面上下雪
  7. 计算机操作系统 第五版 答案,操作系统-第5版-习题答案.doc
  8. JFlash烧录不知名的ARM芯片
  9. npp夜光数据介绍 viirs_对 VIIRS/NPP 夜光数据的解读
  10. HHUOJ 1860 哆啦A梦的口袋
  11. Mat和IplImage转换
  12. 计算机硬盘被制成动态硬盘,win10系统基本磁盘转换成动态磁盘的处理办法
  13. 一个网络下,手机如何访问本地网址
  14. EKF SLAM学习笔记02
  15. Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...
  16. 大屏联屏发布系统解决方案
  17. 1018石头剪刀布(模拟)
  18. ViewFlipper用法
  19. 【心理咨询师考试笔记】操作技能(三)——咨询基本技能
  20. Paper系列的查重和知网维普的查重对比

热门文章

  1. cmder 神器 +curl
  2. Nginx自学手册(六)Nginx+Tomcat实现动静分离
  3. Windows Server 2008 R2无密码共享设置
  4. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA
  5. 互联网域名解析系统DNS的工作原理及相关服务配置
  6. Samba 3.4.0 发布
  7. 同一个项目的不同的项目工作经验总结--程序员丁
  8. 如何在程序中嵌入FOP
  9. js判断时间跨度,以月数为单位
  10. Tsinsen A1517. 动态树 树链剖分,线段树,子树操作