Debug模式下编译溢出问题

时间:2021-06-03 15:54:55

问题:

代码在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所以才不会报出内存溢出的问题。