m_pRecordset.CreateInstance(__uuidof(Recordset));   
这一句是不是循环调用多次

解决方案 »

  1.   

    理一下程序执行过程,问题就清楚了
    特别是看看程序是否真正能执行到ExitConnect()函数
      

  2.   

    循环代码如下,只是最简单的查询,然后关闭,内存都一样往上涨
    void test()
    {
    ADOConn con;
    con.OnInitADOConn();
    _bstr_t str("select   *  from  table1");
    con.GetRecordSet(str);
    con.ExitConnect();
    }
    void main()
    {
    for(int i=0;i<100;i++)
    {
    test();
    }
    }
    另外,把ExitConnect函数改为
    void CADOConn::ExitConnect()
    {
    if (m_pRecordset != NULL)
    {
    m_pRecordset->Close();
     m_pRecordset.Release() ;
    }
    if (m_pConnection!= NULL)
    {
    if(m_pConnection->State)
    {
    m_pConnection->Close();
    m_pConnection.Release();
    }
    }
    ::CoUninitialize();
    }
    都还是一样,非常的郁闷
      

  3.   

    忘了加上Sleep,不加Sleep的话,内存涨得不多,但是加了Sleep再循环的话,内存就涨得很快,100次循环完就变为20多m了
    void main()
    {
    for(int i=0;i<100;i++)
    {
    test();
    Sleep(30000);
    }
    }