C语言中Debug模式与Release模式下的区别

文章探讨了Debug和Release版本在编程中的差异,重点分析了Release版本的优化如何避免一个特定的死循环情况。在Debug模式下,未优化的代码可能导致意外的行为,而Release版本通过优化内存布局防止了这种问题的发生。
摘要由CSDN通过智能技术生成

区别:

一:1. Debug称为调试版本,不做任何优化,便于程序员调试。

       2.Release成为发布版本,主要是用于发送给用户的已经优化(优化很重要)的源码,一般是给用户使用的,且用户一般不能调试。

二:  接下来详细介绍一下Release优化的案例,上图(经典例题):

 (1). 标记①可以看出:模式为Debug

 (2). 标记②可以看出:程序进入了打印"呵呵"的死循环

        对于打印呵呵的死循环,这点我们扩充一下知识(关于VS内存堆战区如何分配空间的知识)

        上图:

 

 //注意:1.在Debug且是x86环境下,若是在release(对Debug进行优化,即将i地址存放到
                    //内存栈区的arr的下面)内,则不能无限循环
          //2.标记③i变量在arr[]变量定义之前,若反过来不会死循环,会致使越界错误
          //3.数组下标增大,数组元素在内存中地址变大
          //4.栈内存由高到低先存i后存arr,且i与arr[9]中间空两个内存地址(导致循环的重要原因)
          //5.内存栈区存储特点:由高到低

综上所述:导致死循环原因:①Debug未有优化功能

                                              ②在VS中,恰巧将i值放在arr[12](虽说越界访问)中,故使得修改                                                      arr[12] = 0也就意味着修改i = 0;(主要原因)

特别注意:why使用Release不会导致死循环?

                   原因:在这个版本下把i的内容优化到了数组下面低地址处,不会恰好衔接着改变i值。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值