C++ 循环运行到一半程序崩溃,强制结束,已解决

笔者在进行基于C++的Qt开发时,多次出现循环语句运行到一半exe崩溃,程序强行退出的问题,经排查发现是因为循环中使用了数组,部分数组变量在循环中越界了,修改前的代码如下所示:由图可知,两个double数组的长度都是8

typedef struct _ArtScope_wfmInfo_
{
    double fLsbs[8];
    double rangevalue[8];
    
	uInt32 wMaxLSB;
	int32 TriggerMode;
	uInt32 actualSamples;
	uInt32 pAvailSampsPoints;
	int32 channelCount;
}ArtScope_wfmInfo, *PArtScope_wfmInfo;

在循环语句中使用了结构体的这两个成员变量

 if(historyFileLen >= 1024)
        {
            if(buff_busy==1)
            {
                for(k=0; k<1024;k++)
                {
                   
                    voltData[k] = (filewfmInfo.fLsbs[k%filewfmInfo.channelCount]*(fileBuf[k]&filewfmInfo.wMaxLSB)-filewfmInfo.rangevalue[k%filewfmInfo.channelCount]);
                }
            }

打印fLsbs 和rangevalue的索引值发现,远远超了8,即数组越界。将定义中的数组长度修改为1024,则循环可以正常结束。

typedef struct _ArtScope_wfmInfo_
{
    double fLsbs[1024];
    double rangevalue[1024];

	uInt32 wMaxLSB;
	int32 TriggerMode;
	uInt32 actualSamples;
	uInt32 pAvailSampsPoints;
	int32 channelCount;
}ArtScope_wfmInfo, *PArtScope_wfmInfo;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值