C++ GCC4.4 warning: array subscript is above array bounds

左心房为你撑大大i 提交于 2019-12-03 12:57:12

Got the same error. As a workaround I replaced

is_any_of(" ")

with

is_from_range(' ', ' ')

which might also be slightly more efficient.

Could have something to do with one or more of these GCC bugs:

GCC bugzilla search results for "Warning: array subscript is above array bounds"

Not all of them are valid, but there are some fixed ones if you search around, too:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37861

So I'm pretty sure there's something going on there. Based on the comments, I'd try compiling without optimisation and see if it goes away.

I got a spurious bounds warning using one of the standard algorithms (std::remove, I think) and passing iterator parameters:

myarray, 
myarray + sizeof(myarray)/sizeof(*myarray)

which I'm pretty sure are in bounds. It was only in toy code, though, so I just bodged around it. If GCC really is throwing dodgy warnings you'll just have to inspect your code extra-carefully until it's fixed.

I notice your loop here is altering the length of the string, but not updating the loop termination condition. Could this be the source of your issue?

   sf::Uint32 stringSize = newLine.size();
   for( sf::Uint32 insertPos = MAX_LINE_LENGTH;
      insertPos < stringSize; insertPos += MAX_LINE_LENGTH ) 
   {
      newLine.insert( insertPos, "\n" );
      // You were probably wanting to put this here..
      insertPos++;
      stringSize++;
   }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!