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

版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:http://blog.csdn.net/mars_xiaolei。 https://blog.csdn.net/mars_xiaolei/article/details/82854963

在调试MFC程序时,关闭对话框窗口时遇到了这个问题:

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

这句话的意思是:

运行时检查失败#2 -围绕变量“dlg”的堆栈被损坏。

然后去网上搜了一下,很有可能是数组越界的问题,于是我找到了dlg声明的地方,没有什么问题啊

CCPP2018Dlg dlg;
m_pMainWnd = &dlg;

也有可能是其它地方数组越界的错误,于是找到了OnInitDialog()函数,果然发现了一个数组越界

for (int i=0;i<8;i++)
{
    video[MAX_VIDEO_CHANNEL]=0.0;	
}

出现问题的原因就是忘记将MAX_VIDEO_CHANNEL替换为i了,上面的MAX_VIDEO_CHANNEL其实是一个宏定义,值为16,超过了8就导致了数组越界,修改为i就行了。

出现这个问题的地方可能不一样,但是原因应该都差不多,好好找找还是能找出来的。

猜你喜欢

转载自blog.csdn.net/mars_xiaolei/article/details/82854963