内存泄漏 - 释放和删除

dys*_*ree 4 c++ com memory-leaks visual-c++-6 delete-operator

IFSUPCUTILSize* size = NULL;
CoCreateInstance(CLSID_UTILSize, NULL, CLSCTX_INPROC_SERVER, IID_IFSUPCUTILSize,    reinterpret_cast<void**>(&size));

if (size != NULL){
size->Release();
size = NULL;
}
delete size;
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中需要"删除大小"吗?如果我包含"删除大小",我会有内存泄漏,因为我没有使用新的.或者在CoCreateInsatnce的调用中是否有新的内容.我使用VC++ 6构建它.

Rem*_*eau 10

COM接口是引用计数. CoCreateInstance()返回一个指向COM对象的接口指针,该对象的引用计数已经递增.调用Release()递减引用计数.当引用计数降为零时,COM对象自动释放自身.不要调用deleteCOM接口指针!始终Release()只使用.