ERROR:ASSERT: “uint(i) < uint(size())“

ERROR:ASSERT: “uint(i) < uint(size())”

1. 源码

			QByteArray message[1024];
			uint16_t DATA[512];
			
			/*
			 *  在 message 使用之前我调用了  message->clear(); ,并重新载入了值。
			 */
			
            for(int i = 0; i < 1024; i ++)
            {
                char hNum = message->at(i),lNum = message->at(i+1);	// 此处出错
                DATA[i/2] = hNum + (lNum<<8);
            }

2. 报错

ERROR:ASSERT: “uint(i) < uint(size())” from…

3. 释义

索引超出了数组的大小。即 message->at(i),i 不在0-1023范围内。

4. 更改

			QByteArray message[1024];
			uint16_t DATA[512];

			if(message->size() > 1024)	// 加判断即可
			{
	            for(int i = 0; i < 1024; i ++)
	            {
	                char hNum = message->at(i),lNum = message->at(i+1);	
	                DATA[i/2] = hNum + (lNum<<8);
	            }
			}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值