最近写了一个程序,工作基本正常,但就是退出的时候会“当”的响一声,就是出现警告对话框时的那种声音,但并未出现出错提示,程序正常退出了,debug和release版本都这样,why?

解决方案 »

  1.   

    看看在debug下内存泄漏情况吧
      

  2.   

    我想也是内存泄漏的问题,在debug下怎么看呀?
      

  3.   

    我也遇到过这种情况,是因为内存泄漏方面的问题,一运行到free(m_patoms);就退出了。
      

  4.   

    F5 从头到尾运行一遍。output 的地方 会报告出内存泄漏的。如果不行,装一个boundchecker 试试
      

  5.   

    debug模式运行,VC的Debug窗口中显示memory leak的信息,然后跟踪具体如何跟踪好好读MSDN吧,很复杂的。不过一般memory leak都是由于自定义类构造实例时数据成员使用new,而类实例的析构时没有delete数据成员所占用的空间因此特别要检查代码中new的实例是否都delete了,析构函数中是否把new的成员都delete了
      

  6.   

    具体是这样的,我是在创建一个CTreeCtrl,树的结点是一个目录的所有目录和文件,在创建树的时候,同时创建了一个单向链表,把树的所有结点都串了起来,代码如下
    第一句出现泄漏
    pNode = new TREENODE[1];//TREENODE是自定义的一个结构体,此句出现泄漏
    pNode->pPre = pCur;
    pCur = pNode;
    pNode->bIsDirector = bIsDirectory;
    pNode->strName = strFileName;
    pNode->strPath = strFilePath;
    pNode->hTreeItem = InsertItem(pNode->strName,hRoot);
    pNode = NULL;
    然后在这个类的析构函数中释放资源,代码如下,
    TREENODE * pNode = pHead;
    while(pHead)
    {
    pNode = pHead;
    delete pNode;
    pHead = pHead->pPre;
    }
    delete pHead;
    请帮我看一下,问题出在什么地方
      

  7.   

    pNode = pHead;
    delete pNode; 以后 
    pHead还有指向可用的地址吗?pHead = pHead->pPre;???
      

  8.   

    跟踪其实并不难
    只要你清楚的知道,自己的程序运行到那一步该是什么。
    F10 F11 shift+F10 ctrl+F10
    够了