void CChartDlg::Leak()
{
    CString str("ttt");
}在void CChartDlg::OnOK()里调用:void CChartDlg::OnOK()
{
   Leak();
   _CrtDumpMemoryLeaks();
}后显示:Detected memory leaks!
Dumping objects ->
{78} normal block at 0x00374F88, 48 bytes long.
 Data: <2           F   > 32 00 00 00 96 00 00 00 20 03 00 00 46 05 00 00 
{77} normal block at 0x00374F10, 48 bytes long.
 Data: <                > 00 00 00 00 02 00 00 00 0A 00 00 00 14 00 00 00 
strcore.cpp(118) : {70} normal block at 0x00374BC8, 25 bytes long.
 Data: <            Afx:> 01 00 00 00 0C 00 00 00 0C 00 00 00 41 66 78 3A 
{50} client block at 0x003743C0, subtype 0, 64 bytes long.
a CDynLinkLibrary object at $003743C0, 64 bytes long
{45} client block at 0x00374240, subtype 0, 64 bytes long.
a CDynLinkLibrary object at $00374240, 64 bytes long
{43} client block at 0x003740F0, subtype 0, 64 bytes long.
a CDynLinkLibrary object at $003740F0, 64 bytes long
Object dump complete.

解决方案 »

  1.   

    和Leak函数无关,不执行也应该有
    我这有没有执行都只有后三条泄露
      

  2.   

    _CrtDumpMemoryLeaks();用法不当取消_CrtDumpMemoryLeaks();的调用,在程序初始化函数内调用以下语句
    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //如下的测试代码可看到改善后的效果
    void CChartDlg::Leak()
    {
     CString str("ttt");
     char *a = new char[1024];
    }