代码之家  ›  专栏  ›  技术社区  ›  demoncodemonkey

“定义新调试”和“取消定义此文件”等是否确实必要?

  •  10
  • demoncodemonkey  · 技术社区  · 17 年前

    创建新的MFC应用程序时,向导会在几乎每个CPP文件中创建以下代码块:

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    

    有时,它还添加了以下内容:

    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    

    在从CPP中删除此代码后,我尝试在调试中运行,它似乎工作正常。“new”ing变量工作正常,没有泄漏,断言对话框显示正确的文件名并跳转到有问题的行。

    有人能告诉我它是做什么的,删除它是否安全吗?

    2 回复  |  直到 10 年前
        1
  •  10
  •   franji1 James Curran    5 年前

    删除此项是完全安全的。它是一种调试辅助工具;保留它将在输出窗口中的警告中生成程序退出时内存泄漏的更好细节。如果删除它,仍然会得到内存泄漏报告,但没有任何关于它们发生在源代码中的详细信息。

        2
  •  1
  •   Samphan    14 年前

    Detected memory leaks!
    Dumping objects ->
    f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {7508} normal block at 0x029B9598, 54 bytes long.
     Data: <                > E4 B8 C9 00 12 00 00 00 12 00 00 00 01 00 00 00 
    f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {7501} normal block at 0x029B94A8, 28 bytes long.
     Data: <                > E4 B8 C9 00 05 00 00 00 05 00 00 00 01 00 00 00 
    f:\source\agent\agent\deviceid.cpp(21) : {7500} normal block at 0x029CDFC0, 8 bytes long.
     Data: <        > A8 95 9B 02 B8 94 9B 02 
    f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {6786} normal block at 0x029C0D88, 160 bytes long.
     Data: <        G       > E4 B8 C9 00 19 00 00 00 47 00 00 00 01 00 00 00 
    f:\source\agent\sysinfo\sysinfo.cpp(27) : {6733} normal block at 0x029B84D8, 92 bytes long.
     Data: <                > 00 00 00 00 00 10 00 00 00 00 01 00 FF FF FE 7F 
    Object dump complete.
    
    推荐文章