天天看點

Debug模式下編譯溢出問題

問題:

代碼在Debug模式下編譯報出記憶體溢出的錯誤,而Release模式下則沒有。

由于Debug模式下包含調試資訊,并且不作任何優化。而Release模式進行了各種優化,記憶體檢測等操作均省去,使得程式在代碼大小和運作速度上都是最優的。

方法1:

猜測Release對代碼進行了優化或者根本就沒有進行記憶體檢測,才導緻Release模式下編譯通過的。于是我進行了代碼縮減,删除沒有用的變量,問題仍然沒有解決。

方法2:

       我發現在Debug模式下,main.c檔案淡黃色,

Debug模式下編譯溢出問題

,Release模式下仍然為白色,說明Debug模式下,main.C的預設編譯功能已經被修改。比較後發現,Debug模式下main.c使用-g編譯方式,如圖:

Debug模式下編譯溢出問題

在Debug模式下修改main.c為No Debug方式,在編譯,問題解決!!!

結論:

使用了-g編譯選項,生成的目标問題裡面會有一些調試資訊,便于使用者調試代碼使用的。代碼在Debug模式下就是增加了這些調試資訊,才導緻記憶體不夠的。Release模式下并沒有使用-g是以才不會報出記憶體溢出的問題。

繼續閱讀