M_F_C

来源:互联网 发布:刀奴猛将数据 编辑:程序博客网 时间:2024/09/21 06:32

  #ifdef _DEBUG
  #undef THIS_FILE
  static char THIS_FILE[]=__FILE__;
  #define new DEBUG_NEW
  #endif

__FILE__和__LINE__都是编译器定义的宏。当碰到__FILE__时,编译器会把__FILE__替换成一个字符串,这个字符串就是当前在编译的文件的路径名。在DEBUG_NEW的定义中没有直接使用__FILE__,而是用了THIS_FILE,其目的是为了减小目标文件的大小。假设在某个cpp文件中有100处使用了new,如果直接使用__FILE__,那编译器会产生100个常量字符串,这100个字符串都是这个cpp文件的路径名,显然十分冗余。如果使用THIS_FILE,编译器只会产生一个常量字符串,那100处new的调用使用的都是指向常量字符串的指针。

 

在   MFC   中,可以使用   DEBUG_NEW   宏代替   new   运算符来帮助定位内存泄漏。在程序的“Debug”版本中,DEBUG_NEW   将为所分配的每个对象跟踪文件名和行号。当编译程序的“Release”版本时,DEBUG_NEW   将解析为不包含文件名和行号信息的简单   new   操作。因此,在程序的“Release”版本中不会造成任何速度损失。    
  如果不想重写整个程序来使用   DEBUG_NEW   代替   new,则可以在源文件中定义下面的宏:      
                           #define   new   DEBUG_NEW  
  当进行对象转储时,用   DEBUG_NEW   分配的每个对象均将显示被分配到的文件和行号,使您可以查明内存泄漏源。      
  MFC   框架的“Debug”版本自动使用   DEBUG_NEW,但代码不自动使用它。如果希望利用   DEBUG_NEW &nbs

 

 

________________________________________________________________________________

____________________________________________

______________________________________________________________________________

 

"general error c101008a: Failed to save the updated manifest to the file "

 

网上普遍的解决方法:

 

在用vs2005时,默认编码为unicode,如果在项目中途改变,则编译时会碰到错误general error c101008a: Failed to save the updated manifest to the file "./Debug/Menu.exe.embed.manifest". Bpcn mt.exe .

这时清理解决方案,再重新生成项目便可解决.

 

不能将参数 2 从“const char [3]”转换为“LPCTSTR”

原因:

    默认的是Unicode字体,这里需要使用多字节字体

    配置属性->常规->使用多字节字符集