2013-11-21 79 views
1

我使用g ++(g ++ - g3 main.cpp)和VisualStudio 2013(VS) 以調試模式構建下面的程序。運行時 - VS退出並聲明抱怨索引範圍問題在Ubuntu下 但G ++版本13.10運行正常,並將其打印VI [11] = 11g ++中的任何調試標誌來檢查數組索引

我明白 - C++標準並沒有對我的情況下指定的行爲,但在我的情況 警告或崩潰將是很好。

是否有GCC(或鐺)任何標誌生成過程中,以使陣列索引超出範圍檢查 的? 如果沒有任何好的分析工具呢?

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; 
} 
+0

這看起來像是重複http://stackoverflow.com/questions/4778552/is-it-possible-to-enable-array-bounds-checking-in-g –

+0

這看起來很有幫助:http:// stackoverflow.com/questions/2291114/runtime-array-bounds-checking-with-g –

+0

@JerryJeremiah是的,它的作用。 – Ali

回答