有一个这样的声明
_ConnectionPtr *ppConnection = NULL;
ppConnection = new _ConnectionPtr();
(*ppConnection).CreateInstance("ADODB.Connection");
(*ppConnection)->Open("Test","","",adModeUnknown);最后,我要释放空间该怎么做

解决方案 »

  1.   

    那我要怎么release是用ppConnection->Release();
    还是(*ppConnection)->Release();
    (*ppConnection).Realease();
    ppConnection.Release();
      

  2.   

    try
    {
    if((*ppConnection)->State)
    {
    (*ppConnection)->Close();
    }
    (*ppConnection).Release();
    }
    catch (_com_error e)
    {}
    这样做可确保无误
      

  3.   

    _ConnectionPtr *ppConnection是智能指针,可以自己释放的
      

  4.   

    _ConnectionPtr *ppConnection = NULL;
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~为什么要声明一个二级指针呢?
    ppConnection = new _ConnectionPtr();
    (*ppConnection).CreateInstance("ADODB.Connection");
    (*ppConnection)->Open("Test","","",adModeUnknown);
    ....
    (*ppConnection)->Close();
    (*ppConnection).Release();
    delete ppConnection;
    // 直接这样就可以了三
    _ConnectionPtr pConnection;
    pConnection.CreateInstance("ADODB.Connection");
    pConnection->Open("Test","","",adModeUnknown);
    // 这是智能指针,不需要释放