g ++中用于检查数组索引的任何调试标志

时间:2013-11-21 23:10:09

标签: c++ gcc c++11

我使用g ++(g ++ - g3 main.cpp)和VisualStudio 2013(VS)构建下面的程序 在调试模式下。运行时 - VS退出并断言抱怨索引范围问题 但是Ubuntu 13.10下的g ++版本运行正常并打印vi [11] = 11。

我理解 - C ++标准没有为我的案例指定行为,但是 在我的情况下警告或崩溃会很好。

gcc(或clang)中是否有任何标志可以使数组索引超出范围检查 在构建期间? 如果没有任何好的分析工具呢?

int main() { 
    vector<int> vi(8); 
    vi.push_back(1); 
    vi.push_back(2); 

    vi[11] = 11; 
    std::cout << "Vi[11]=" << vi[11] << std::endl; 

    return 0; 
}

1 个答案:

答案 0 :(得分:0)

有一个很好的边界检查工具:http://cppcheck.sourceforge.net/ 关于gcc -Warray-bounds标志可能有帮助。