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);
	            }
			}
经验分享 程序员 微信小程序 职场和发展