像下列伪代码,正确吗:    strSql="select * ……;  
    pRs->Open(_bstr_t(strSql),         //pRs是个_RecordsetPtr
              pConn.GetInterfacePtr(), //pConn是个_ConnectionPtr 
              adOpenDynamic,
              adLockOptimistic,
              adCmdText);              
    ……          //数据处理
    ……
    pRs->Close();
    pRs = NULL;   //这句之前要加一句pRs->Release()吗?    按道理COM的指针都要Release,但我不知道系统是否在Close()里帮我Release过了。我程序里没加Release(),好像也没看出什么不妥,也没看到内存泄漏什么的。但我心里总不踏实,特上来问一下。谁对这有经验?