调试错误R6010

Debug error R6010

本文关键字:R6010 错误 调试      更新时间:2023-10-16

我已经在网上搜索过了,但没有任何帮助。这是导致错误的代码:编辑以包含更多代码。给我R6010调试错误在Visual Studio 2013。

do
{
    rLength = recv(s1, rBuf, 1, 0);
    if (rLength > 0)
    {
        rData += rBuf[0];
        if (rBuf[0] == nByte[0])
        {
            switch (rData[0])
            {
            case 'C':
                uid = rData.substr(1, 3);
                statSend = "00" + uid + "ST" + userinfo;
                charStat = statSend.c_str();
                lLength = send(s1, charStat, strlen(charStat) + 1, 0);
                break;
            case 'M':
                if (rData[4] == 'C' && rData[5] == 'H');
                {
                    size_t start = 6;
                    size_t end = rData.find("!@#$!@#&!@#*LlL");
                    size_t start2 = rData.find("*LlL");
                    size_t end2 = rData.find(";");
                    cout << rData.substr(start2, end2 - start2) << ":" << rData.substr(start, end - start) << endl;
                }
                break;
            }
            rData = "";
        }
    }
} while (rLength > 0);

这是我从你的代码中推断出来的猜测。当你调用

rData.find("!@#$!@#&!@#*LlL"); 

…但是它没有找到子字符串,那么变量start可以被设置为一个随机值。(在我的测试程序中,它是一个大整数。)

然后尝试使用存储在start中的(未定义)值再次解析字符串。

我怀疑这就是你所看到的…"出界"错误。参见这个问题。