C++ SIGSEGV循环中的分段错误

问题描述:

我有以下代码,最终出现分段错误。C++ SIGSEGV循环中的分段错误

for (int a=0; a<inputFileList.size(); a++) 
    { 
     fileLines = readFile(inputFileList[a].c_str()); 
     for (int i = 0; i < fileLines.size(); i++) 
     { 
      if (fileLines[i].find("text") != string::npos) 
      { 
       bool warnFound = false, errFound = false; 
       i++; 
       while (fileLines[i].find("message") == string::npos && i < fileLines.size()) 
       { 
        if (fileLines[i].find("error") != string::npos) 
         errFound = true; 
        else if (fileLines[i].find("warning") != string::npos) 
         warnFound = true; 
        i++; 
       } 
       i--; 
       if (errFound) 
        errCtr++; 
       else if (warnFound) 
        warnCtr++; 
       else 
        okCtr++; 
      } 
     } 
     fileLines.clear(); 
    } 

当我删除while循环,我不会再遇到这个错误。但我不知道这个循环有什么问题。

THX的支持

的同时,也许应该读

while (i < fileLines.size() && fileLines[i].find("message") == string::npos) 
+0

这就是我浪费了一个小时......愚蠢...... 谢谢! – Tom 2011-05-09 12:37:42

此:

while (fileLines[i].find("message") == string::npos && i < fileLines.size()) 

应该是:

while (i < fileLines.size() && fileLines[i].find("message") == string::npos) 

我不知道,如果它有任何事情要做你看到的错误,但你似乎在第7行i++有问题。即使i == fileLines.size() - 1,即使fileLines[i].find("message")下一行将访问不存在的项目,它可能会增加我。