zoukankan      html  css  js  c++  java
  • vs2008bin下Debug bll Release文件 obj下的Debug bll Release文件区别

    Bin目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。

     

    obj是object的缩写,用于存放编译过程中生成的中间临时文件。其中都有debug和release(中文的意思:释放)两个子目录,分

    别对应调试版本和发行版本,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。

    因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是

    否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。

     

    PRoperties文件夹定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs类文件,用于保存程序集的信息,如名

    称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。

     

    经常你会遇到DEBUG成功的版本RELEASE   就有问题,以下是问题的分析总结
    DEBUG和RELEASE   版本差异及调试相关问题:   
      .                   内存分配问题   
        
     1.    变量未初始化。下面的程序在debug中运行的很好。

     thing   *   search(thing   *   something)   
                      BOOL   found;   
                      for(int   i   =   0;   i   <   whatever.GetSize();   i++)   
                          {   
                          if(whatever[i]->field   ==   something->field)   
                                {   /*   found   it   */   
                                  found   =   TRUE;   
                                  break;   
                                }   /*   found   it   */   
                            }   
              if(found)   
                                return   whatever[i];   
              else   
                                return   NULL;   
      而在release中却不行,因为debug中会自动给变量初始化found=FALSE,而在release版中则不会。所以尽可能的给变量、类或结构初始化。   
      

    2.    数据溢出的问题       
        
                      如:char   buffer[10];   
                                int   counter;   
        
                    lstrcpy(buffer,   "abcdefghik");   
        
      在debug版中buffer的NULL覆盖了counter的高位,但是除非counter>16M,什么问题也没有。但是在release版中,counter可能被放在寄存器中,这样NULL就覆盖了buffer下面的空间,可能就是函数的返回地址,这将导致ACCESS   ERROR。   
        

     

      3.   DEBUG版和RELEASE版的内存分配方式是不同的   。

    如果你在DEBUG版中申请       ele   为   6*sizeof(DWORD)=24bytes,实际上分配给你的是32bytes(debug版以32bytes为单位分配),   而在release版,分配给你的就是24bytes(release版以8bytes为单位),所以在debug版中如果你写ele[6],可能不会有什么问题,而在release版中,就有ACCESS   VIOLATE。   

     

  • 相关阅读:
    数组常用函数
    数组游标操作
    PHP中 字符串 常用函数
    mysqli扩展库的预处理技术 mysqli stmt
    mysql的事务处理
    mysqli的增强功能
    mysql扩展库-1
    抽象类与接口
    iOS判断字符串是否包含表情字符
    iOS8 UITableView 分割条设置separator intent = 0 不起作用
  • 原文地址:https://www.cnblogs.com/ken-admin/p/6405656.html
Copyright © 2011-2022 走看看