Stack Overflow Exception

语言:标准C++

IDE:vs2010  

操作:递归搜索栅格图像时出现StackOverflow异常,图像大小为7397×4248共个31422456个像元。

原因:程序运行时所进行的大量的递归调用所占堆栈超过了系统默认堆栈大小,引发栈溢出异常。

保留堆栈和提交堆栈,指定虚拟内存中的总的堆栈分配,单位为字节,仅在生成exe文件时使用。

保留堆栈:X86和X64的计算机默认保留堆栈大小为1MB,Itanium 芯片计算机为4MB;

提交堆栈:对于 x86 和 x64 计算机,默认提交值为 4 KB。 在 Itanium 芯片组上,默认值为 16 KB。代表一次分配的物理内存量。越大程序越快,占用内存也越多,可能启动也越慢。

解决:打开工程--属性--链接--系统--堆栈保留大小:修改到一个大于1M=1048576字节的数,我修改到了50000000,约为47.69MB,不再引发这个异常。

参考:http://msdn.microsoft.com/zh-cn/library/8cxs58a6.aspx

2011-11-05 11:25 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值