VS2012中出现stack overflow的错误提示

一、问题描述与解决

在VS中进行图像检索时,由于构建了二维倒排索引表,又融合了四种不同的优化技术:软分配,突发权重,汉明嵌入,弱几何一致性,由于图像中每一个描述子对应一个128bits的二进制汉明标签,因此在较大的图像数据集上进行实验时,就会出现stack overflow的问题,开始怀疑两个地方出现问题:(1)内存不够,看一下任务管理器中CPU和内存的使用情况,发现内存足够使用,所以这种情况排除;(2)程序的问题,然后开始一行行的调试代码,没有发现任何异常,因此这种情况也排除。最后才偶然发现是由于VC++中默认的栈空间较小所致。因为VC++默认的栈空间是1M,我们可以将其设置的大一点(比如10M),就会避免上面的错误提示。虽然折腾了好几天,不过最后找到了问题的所在。

具体的更改栈空间大小的方法如下:“项目”→“属性”→“链接器”→“系统”:

将其中的“堆栈保留大小”设置为10M即可。

二、分析

       内存的读取速度显然较硬盘要快得多,当程序遇到大规模数据的频繁存取时,开辟内存空间显得尤为重要,一般来说,我们所使用的的内存有堆和栈之分,其他的我们很少控制,栈的速度较快,但是控件小,不灵活;而堆的控件几乎可以满足任何要求,而且灵活,但是相对于栈来说,速度要慢很多,并且在VC中堆是人为控制的,new了就要delete,否则很容易产生内存泄漏等问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linda Fan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值