这是对IErrorInfo发布的正确处理
Which is proper handling of IErrorInfo release
本文关键字:正确处理 IErrorInfo 更新时间:2023-10-16
这可能是基本的,但我已经很久没有使用它了。 我看过下面每个例子:
IErrorInfo *pError;
HRESULT hrError = ::GetErrorInfo(NULL, &pError);
//more code here
if (SUCCEEDED(hrError) && pError) {
//more code here
pError->Release();
}
然后在其他地方
IErrorInfo *pError;
HRESULT hrError = ::GetErrorInfo(NULL, &pError);
//more code here
if (SUCCEEDED(hrError) && pError) {
//more code here
}
pError->Release();
以下哪项是在此处使用Release()
的正确方法? 有关系吗?如果是这样,为什么?
第一种用法是正确的,尽管在"此处的更多代码"中,您必须小心不要引发异常。
最好使用智能指针而不是 IErrorInfo *
,当超出范围时,它会自动调用Release()
。然后,在"此处有更多代码"引发异常的情况下,您的代码不会泄漏。
第二个是错误的,因为如果pError
为空或不确定,那么取消引用它会导致未定义的行为。
相关文章:
- arm-none-eabi-g++ 不能使用 -flto 正确处理弱别名
- 如何避免 boost 的野兽body_limit错误并正确处理大消息
- 如何正确处理渲染大小为 >= 2B 的 utf-8 字符?
- 是否正确处理了此代码异常?
- 为什么 CSpinButtonCtrl 不能正确处理大于 1000 的数字?
- 自定义迭代器:如果 a 和 b 的行为不同,如何正确处理距离计算和相等比较
- 编译器在 C/C++ 中通过指针调用函数时如何正确处理 ABI
- 如何在 Python 3 中正确处理用于嵌入的字符串
- 如何正确处理OpenSSL错误(BIO)
- 为什么我的模板专业检查不足以正确处理相应的类型
- 在子类过程中正确处理WM_PASTE
- 如何正确处理此SFINAE
- 如何在 c++ 中正确处理常量字符*
- 如何在多线程程序中使用 boost::asio 正确处理 fork()
- 类的静态实例无法在程序退出时正确处理资源删除
- 正确处理字节对齐问题 - 通过UDP在16位嵌入式系统和32位桌面之间
- 如何确保二元布尔操作员正确处理其论点的构造
- FSNF 无法正确处理字符串
- VS2010 未正确处理预处理器条件下的"includes"
- 这是对IErrorInfo发布的正确处理