微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vc中出现stack overflow错误VS设置默认栈大小

我在代码中定义了一个3维数组,如果迭代次数较多,运行时会产生stack overflow错误。在CSDN论坛看到一个帖子:
是这样的,我同事原来也遇到过类似的问题,后来把project设置里的堆栈加大就可以了,认是1M,你可以加大到10M试试.  
  project->setting->link:  
  在category里选择output,在stack的Reserve里输入0x10000000试试  

   具体设置如图:



  每当创建一个线程时,系统就会为线程的堆栈(每个线程有它自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个已保留的区域。按照认设置, 系统保留1MB的地址空间并提交两个页面的内存。但是,这些认值是可以修改的,方法是在你链接应用程序时设定Microsoft的链接程序的 /STACK选项:/STACK:reserve[,commit]  
  当创建一个线程的堆栈时,系统将会保留一个链接程序的/STACK开关指明的地址空间区域。但是,当调用CreateThread或 _beginthreadex函数时,可以重载原先提交的内存数量。这两个函数都有一个参数,可以用来重载原先提交给堆栈的地址空间的内存数量。如果设定 这个参数为0,那么系统将使用/STACK开关指明的已提交的堆栈大小值。后面将假定我们使用认的堆栈大小值,即1MB的保留区域,每次提交一个页面的 内存。
果然可能解决,先用着再说。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐