Run-Time Check Failure #2 - Stack around the variable ‘ ’ was corrupted.

6 篇文章 0 订阅

Run-Time Check Failure #2 - Stack around the variable 'inDevDlg' was corrupted.


最近做项目的时候,做一个类,需要再添加一个新的成员变量,

我做了的工作有:头文件中添加声明,构造函数中初始化,析构函数中析构,

在完成这些工作后,就是会出现一个中断,然后错误代码:Run-Time Check Failure #2 - Stack around the variable 'inDevDlg' was corrupted.


然后网上搜索资料,有说是  数组出界的,有说重复析构的,还有说改设置的。

最多看见的是:把 project->配置属性->c/c++->代码生成->基本运行时检查 为 默认值 就不会报本异常。具体原因正在研究中。。。如果改为其他就有exception。

但是之前一直没有尝试,总觉得我就是要在现在的这个设置下改过来,要不然要是我的程序到别人的电脑上岂不是就要出错了,难道还要一个个去改队员的程序设置么?于是一直没有尝试。


直到看到这篇文章:http://blog.csdn.net/jiangcaiyang123/article/details/6505270 (不知道是不是原作者,转载的太多,这是我找到的时间最早的一篇)

Project-> XX Properties -> C/C++ -> Code Generation -> Basic Runtime Checks -> Default    Done! 就不会出现中断了!


附上文中对于如此设置的原因猜想:

关于MSDN的解释是在堆栈外面读写某数据。错误是名为RTC1的编译器检测的。又看了更多的技术文章,发现这样的错误是程序员在项目到了一定大的时候,它占用的堆栈量就比较大。我也深有体会。因为自己本来编写一个类,运行时没有错,但是在添加成员属性的时候,在其它方式不变的情况下就容易发生这样的错误。所以据此我猜应该是 VS2005(2008)在内部就限定了堆栈的大小,当项目足够大的时候,就会溢出。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值