gpt4 book ai didi

com - 有对应的 "CreateInstance"吗?

转载 作者:行者123 更新时间:2023-12-01 11:06:07 24 4
gpt4 key购买 nike

我们有一些使用 MSXML 的代码,这样做是为了创建 XML 文档对象:

MSXML2::IXMLDOMDocumentPtr  doc_in;

doc_in.CreateInstance("Msxml2.DOMDocument.6.0");

一旦我们完成了 doc_in,我们如何销毁它?它只是在 doc_in 超出范围时自动销毁,还是什么?

最佳答案

COM 对象生命周期管理建立在 reference counting 之上通过IUnknown s 方法 AddRef()Release()。有关详细信息,请参阅 "Using and Implementing IUnknown" ,特别是 "Rules for Managing Reference Counts" .

最重要的是使用智能指针,最常见的是 ATL CComPtr/CComQIPtr_com_ptr_t .

因此,如果您要处理指向 COM 实例的普通指针,则必须手动Release() 以放弃所有权。
如果您有一个指向 COM 实例的智能指针,则当智能指针实例超出范围时,应该为您完成 Release() - 但请务必查看实际文档您正在使用的智能指针类。

关于com - 有对应的 "CreateInstance"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5720483/

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