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;
}
這看起來像是重複http://stackoverflow.com/questions/4778552/is-it-possible-to-enable-array-bounds-checking-in-g –
這看起來很有幫助:http:// stackoverflow.com/questions/2291114/runtime-array-bounds-checking-with-g –
@JerryJeremiah是的,它的作用。 – Ali