【发布时间】:2015-11-03 10:29:36
【问题描述】:
有人能解释清楚有什么区别吗
.Release()
和
->Release() 在 CComPtr 上?
确切地说,在这两种情况下内存管理是如何发生的?
【问题讨论】:
-
@tartanllama 太糟糕了,在重复的线索中投票率最高的答案如此不精确。
-
我不认为这是一个合适的重复,在这种情况下它们都是重载的运算符
-
哇,这些答案中的大多数完全忽略了运算符重载。
-
只需使用调试器进入
CComPtr::Release,您就会立即看到在托管指针上进一步调用IUnknown::Release之间的几行代码。 -
->Release() 几乎可以肯定是一个错误,.Release() 是你不应该做的事情,因为使用 CComPtr 的目的是让它自动处理它。请改用
delete运算符,它是明确的。