???????е?AddRef??Release?????????????????????????????????????????????????????????????????????????????????????????£?

 

int main()
{
    IUnknown* pi = CreateInstance();
 
    IX* pix = NULL;
    HRESULT hr = pi->QueryInterface(IID_IX?? (void*)&pix);
    if(SUCCEEDED(hr))
    {
        pix->DoSomething();
        pix->Release();
    }
 
    pi->Release();
}
 

?????????????????CreateInstance????????ù?AddRef????????????ε???????????????????Release???????????????????????????????????????????????AddRef??Release?????

 

 

ULONG _stdcall AddRef()
{
    return ++ m_cRef;
}
 
ULONG _stdcall Release()
{
    if(--m_cRef == 0)
    {
        delete this;
        return 0;
    }
    return m_cRef;

 

????????????Python?У??????????ü?????????????????ü?????0??????????__del__?????????????Python???????ü?????????????????????????????????Python??????????????????C/C++??Щ?????????????????ü???????????????????????е?λ?????Python??????????????????????gc??飬?????????Python??GC????????????ü??????????????????????????????????????????

2.???-?????

???????-?????Mark-Sweep??????????????д????????????????????????Щ??????????????????????????????????п???????????????????????????????????????????????????????????Σ????????????д??????????????????????????