C++ `_ZSt28__throw_bad_array_new_lengthv1` 編譯錯誤
出現場景:類似代碼 <code>vector<vector<int>> grid = {{1, 2, 3}, {4, 5, 6}};</code> 導緻 C++ 調試閃退
重新在終端下使用 <code>g++ test.cpp -o test.exe -g -std=c++11 -Wall</code> 進行編譯,得到的 .exe 出現如下錯誤提示
出現調試閃退時,可以先換其他編譯器試運作來排除代碼自身錯誤(MSCV-VS)。在确認自身代碼無誤的情況下,在終端下使用指令編譯也許會得到更多的錯誤資訊。
經測試,<code>_ZSt28__throw_bad_array_new_lengthv1</code> 錯誤在 <code>gcc 8.1.0</code> 和 <code>gcc 11.2.0</code> 下均會出現,解決方法:将 gcc 版本回退到 <code>10.2.0</code>
下載下傳位址:https://winlibs.com/
在終端,你可以通過 <code>g++ -v</code> 或者 <code>gcc -v</code> 來檢視自己使用的 gcc 編譯器版本
貼一下對應的 json 配置以便重制錯誤
lanuch.json
tasks.json