调试错误R6010

时间:2014-03-24 23:50:04

标签: c++

我已经在线搜索过,但没有一个对我有帮助。这是导致错误的代码:已编辑以包含更多代码。给我在Visual Studio 2013中的R6010调试错误。

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);

1 个答案:

答案 0 :(得分:1)

这可以从我的代码中推断出来。当你打电话

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

...但它没有找到substring,那么变量start可以设置为随机值。 (在我的测试程序中,这是一个巨大的整数。)

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

我怀疑这就是你所看到的......一个“越界”的错误。另见this question