你在哪儿  delete(pObj);  了呢?

解决方案 »

  1.   

    我没有delete(pObj);因为一delete就非法操作
      

  2.   

    当你不再使用那个pList时,需要将其中的所有东西都给删除掉的!
    这样就应该不会内存泄漏了!
      

  3.   

    老问题了。
    你的这个List只是STOREBASE指针的List,也就是说只记录了一个32bit的值。
    List不可能去释放它。解决方案:CMapWordToPtr析构前,遍历每个节点,delete它。给分吧!!!!!!!!!!!!!!!!!!!
      

  4.   

    发表个人看法:
    pSlowSet = new CAutoSlowSet;
      
        if(pSlowSet == NULL)
            return FALSE;
    我估计在if后面的条件恒为TRUE,直接执行 m_pSet.Open()会好一点,但怎么就调试过去了呢?STOREBASE* pObj = new STOREBASE;
    pObj可能也是指向数据库的指针,好象没有Open过。应该有问题。至于内存泄露,这是肯定的,你每做一个循环就new一个,而且没有好好初始化,你的机器估计内存比较大.pObj是局部变量,在while右括号处,他的生命已经结束了,你在while循环外delete一个不存在的变量,肯定出事。
      

  5.   

    CMapWordToPtr  wtPtr;CString key;
    CObject* pObj;
    POSITION pos;
    for( pos = wtPtr.GetStartPosition(); pos != NULL; )
    {
       wtPtr.GetNextAssoc( pos, key, (CObject*&)pObj);
       delete pObj;
    }
      

  6.   

    我在析构里写了:
    if(!m_plstStore->IsEmpty())
    {
    POSITION pos = m_plstStore->GetStartPosition();
    while(pos != NULL)
    {
    STOREBASE* store;
    WORD rKey;
    m_plstStore->GetNextAssoc(pos, rKey, (void*&)store);
    delete store;
    }
    m_plstStore->RemoveAll();
    }
    delete m_plstStore;
    但还是内存泄漏,不知为何?
      

  7.   

    delete无效指针是要出保护错的!!!!!
      

  8.   

    我debug了,但output还是:
    strcore.cpp(76) : {554} normal block at 0x007A78B0, 19 bytes long.
     Data: <                > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8 
    strcore.cpp(76) : {553} normal block at 0x007A7860, 43 bytes long.
     Data: <            c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63 
    strcore.cpp(76) : {552} normal block at 0x007A7FB0, 27 bytes long.
     Data: <            2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31 
    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {551} normal block at 0x007A7E30, 36 bytes long.
     Data: <      z    ;   ;> 01 00 00 00 BC 7F 7A 00 E0 A7 1E 3B BC 9D 1F 3B 
    strcore.cpp(76) : {542} normal block at 0x007A7DB0, 19 bytes long.
     Data: <                > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8 
    strcore.cpp(76) : {541} normal block at 0x007A79F0, 43 bytes long.
     Data: <            c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63 
    strcore.cpp(76) : {540} normal block at 0x007A79B0, 27 bytes long.
     Data: <            2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31 
    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {539} normal block at 0x007A7960, 36 bytes long.
     Data: <     yz    ;   ;> 02 00 00 00 BC 79 7A 00 E0 A7 1E 3B F0 96 1F 3B 
    strcore.cpp(76) : {530} normal block at 0x007A7D70, 19 bytes long.
     Data: <                > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8 
    strcore.cpp(76) : {529} normal block at 0x007A7D20, 43 bytes long.
     Data: <            c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63 
    strcore.cpp(76) : {528} normal block at 0x007A7CE0, 27 bytes long.
     Data: <            2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31 
    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {527} normal block at 0x007A7C90, 36 bytes long.
     Data: <     |z    ;   ;> 03 00 00 00 EC 7C 7A 00 E0 A7 1E 3B E0 88 1F 3B 
    strcore.cpp(76) : {518} normal block at 0x007A7F70, 19 bytes long.
     Data: <                > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8 
    strcore.cpp(76) : {517} normal block at 0x007A7F20, 43 bytes long.
     Data: <            c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63 
    strcore.cpp(76) : {516} normal block at 0x007A7EE0, 27 bytes long.
     Data: <            2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31 
    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {515} normal block at 0x007A7E90, 36 bytes long.
     Data: <     ~z    ;   ;> 04 00 00 00 EC 7E 7A 00 D0 99 1E 3B E0 A7 1E 3B 
    strcore.cpp(76) : {506} normal block at 0x007A7C50, 19 bytes long.
     Data: <                > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8 
    strcore.cpp(76) : {505} normal block at 0x007A7C00, 43 bytes long.
     Data: <            c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63 
    strcore.cpp(76) : {504} normal block at 0x007A7BC0, 27 bytes long.
     Data: <            2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31 
    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {503} normal block at 0x007A7B70, 36 bytes long.
     Data: <     {z    ;   ;> 05 00 00 00 CC 7B 7A 00 E0 A7 1E 3B E8 8F 1F 3B 
    strcore.cpp(76) : {492} normal block at 0x007A7820, 19 bytes long.
     Data: <                > 01 00 00 00 06 00 00 00 06 00 00 00 CE DE C3 E8 
    strcore.cpp(76) : {491} normal block at 0x007A77D0, 43 bytes long.
     Data: <            c:\c> 01 00 00 00 1E 00 00 00 1E 00 00 00 63 3A 5C 63 
    strcore.cpp(76) : {490} normal block at 0x007A7790, 27 bytes long.
     Data: <            2001> 01 00 00 00 0E 00 00 00 0E 00 00 00 32 30 30 31 
    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) : {489} normal block at 0x007A7740, 36 bytes long.
     Data: <     wz    ;   ;> 06 00 00 00 9C 77 7A 00 D0 99 1E 3B E0 A7 1E 3B why?????????????
      

  9.   

    跟过这儿没有?????
    if(!m_plstStore->IsEmpty())
        {
                POSITION pos = m_plstStore->GetStartPosition();
                while(pos != NULL)
                {
                    STOREBASE* store;
                    WORD rKey;
                    m_plstStore->GetNextAssoc(pos, rKey, (void*&)store);
                    delete store;
                }
                m_plstStore->RemoveAll();
        }
        delete m_plstStore;
     
      

  10.   

    尤其delete store;这一行。
      

  11.   

    pSlowSet->m_pro_index有没有重复???
    我个人认为:阁下编程习惯有问题。
      

  12.   

    delete一个有效指针,
    delete次数和new的次数一样。
      

  13.   

    delete和new是一样多的,是否我把代码没放在析构函数中,我放在OnDestory()
      

  14.   

    C:\WINDOWS\Desktop\AutoSlow新_2_mn\AutoSlow1Dlg.cpp(2264) 是哪行?
      

  15.   

    与 SuperProgMan(编程者) 商量一下:
    我认为这样会稍好一点。
     STOREBASE* pObj = new STOREBASE; 
      pObj->Open();
      while(!pSlowSet->IsEOF())
        {
          // ..................
    }
    pObj->Close();
    delete pObj;如果用try,catch,throw更好
      

  16.   

    to ahphone(《风云3》里头劫镖的:
       有道理
     
      

  17.   

    #ifndef _MYDEFINE_H_
    #define _MYDEFINE_H_typedef struct tagStore{
    long nIndex;        //索引
    CString strTheme;      //主题
    CTime        StartTime;     //开始时间
        CTime        EndTime;     //结束时间
    CString strFileName;   //文件路径
    long     nTdh;        //通道号
    CString     tdhMs; //通道号描述
    BOOL        isDel;        //是否删除
    CString     strweek;
    //BOOL        bDs;           //是否定时
    }STOREBASE;#endif
      

  18.   

    to  jxxfy(许方勇):
        ahphone(《风云3》里头劫镖的) 说法有道理!
      

  19.   

    to  jxxfy(许方勇):
             对不起,我一直用STL,没用过CMapWordToPtr。 
             按《ahphone(《风云3》里头劫镖的)》的做应该没问题。