gpt4 book ai didi

c++ - 内存泄漏——释放和删除

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:57 25 4
gpt4 key购买 nike

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;

我需要在上面的代码中“删除大小”吗?如果我包括“delete size”,我会因为没有使用New而发生内存泄漏吗?或者在对 CoCreateInstance 的调用中是否有一个 New。我用 VC++ 6 构建了这个。

最佳答案

COM 接口(interface)是引用计数的。 CoCreateInstance() 返回一个指向 COM 对象的接口(interface)指针,该对象的引用计数已经递增。调用 Release() 会减少引用计数。当引用计数降为零时,COM 对象会自动释放自己。不要在 COM 接口(interface)指针上调用 delete!始终仅使用 Release()

关于c++ - 内存泄漏——释放和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com