1.exe中0x77e4bef7处的未处理异常:Microsoft C ++异常:std:out_of_range在内存位置0x0012fb8c

时间:2012-06-15 07:21:44

标签: c++ memory error-handling outofrangeexception

第25-30行出了点问题。我请求现有索引,但收到错误。我不明白这个问题,出了什么问题?

    string *shells_host = new string[cnt];
    for(int i=0;i<cnt;i++)
    {
        shells_host[i] = LinkToHost(shells[i]);
        shells[i] = LinkToReq(shells[i],shells_host[i].size()+7);
    }

所有代码:http://codepaste.ru/10939/

2 个答案:

答案 0 :(得分:3)

您将空字符串传递给LinkToHost(),并且对url.substr(7)的调用会导致异常。

毋庸置疑,在调试器下运行代码需要花费几分钟来解决这个问题。

答案 1 :(得分:0)

使用调试器深入研究或解决问题并添加一些调试打印语句:

for(int i=0;i<cnt;i++)
{
    printf("i=%d, shells=%d", i, shells[i]);
    shells_host[i] = LinkToHost(shells[i]);

    int secondArg = shells_host[i].size()+7;
    printf("shells_host=%d, secondArg", shells_host[i], secondArg);
    shells[i] = LinkToReq(shells[i], secondArg);
}//to here