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

解决方案 »

  1.   

    //如果定义了_DEBUG,也就是说如果程序运行在debug模式下
    #ifdef _DEBUG
    //把new定义成DEBUG_NEW,因为在debug模式和release模式下,new的操作是不一样的,debug模式下new 一块内存的话会在头上加一段东西,所以delete的时候也要对应起来,比较有意思的错误是你的主程序是release版,而在主程序里面调用的一个dll是debug版,同时在dll里面new出来的内存要在主程序里面delete掉这时候就出问题了,因为debug版的new对上了release版的delete
    #define new DEBUG_NEW
    //去掉THIS_FILE这个宏定义防止与下面的变量名字冲突
    #undef THIS_FILE
    //定义变量THIS_FILE用来存放当前.cpp文件的名字,可以在程序里面使用
    static char THIS_FILE[] = __FILE__;
    //结束
    #endif