問題:
代碼在Debug模式下編譯報出記憶體溢出的錯誤,而Release模式下則沒有。
由于Debug模式下包含調試資訊,并且不作任何優化。而Release模式進行了各種優化,記憶體檢測等操作均省去,使得程式在代碼大小和運作速度上都是最優的。
方法1:
猜測Release對代碼進行了優化或者根本就沒有進行記憶體檢測,才導緻Release模式下編譯通過的。于是我進行了代碼縮減,删除沒有用的變量,問題仍然沒有解決。
方法2:
我發現在Debug模式下,main.c檔案淡黃色,

,Release模式下仍然為白色,說明Debug模式下,main.C的預設編譯功能已經被修改。比較後發現,Debug模式下main.c使用-g編譯方式,如圖:
在Debug模式下修改main.c為No Debug方式,在編譯,問題解決!!!
結論:
使用了-g編譯選項,生成的目标問題裡面會有一些調試資訊,便于使用者調試代碼使用的。代碼在Debug模式下就是增加了這些調試資訊,才導緻記憶體不夠的。Release模式下并沒有使用-g是以才不會報出記憶體溢出的問題。