美好的一天。
初始化COM接口引用计数的正确方法是什么?
我看到很多示例,其中引用计数已初始化为 1 ,但也请参见 0 设置的示例。
什么是差异?
答案 0 :(得分:3)
你必须这样设置,当调用最后一个Release()
时,对象会自行处理。这通常意味着在创建对象时,在处理指向请求对象的调用者的对象指针之前,它必须具有引用计数1。是否将引用计数器初始化为零然后调用AddRef()
(在将指针移到调用者之前)将其初始化为1并且不调用AddRef()
通常取决于您。
答案 1 :(得分:1)
重要的是您的COM对象具有有效引用计数。
如果你创建了这个对象,那么从计数1开始是有意义的(因为刚刚创建了一个对象实例)。
您可能需要阅读this interesting article on COM in plain C。
从那篇文章中,您可以阅读(注意exmaple->count = 1;
行):
IExample * example; example = (IExample *)GlobalAlloc(GMEM_FIXED, sizeof(IExample)); example->count = 1; example->buffer[0] = 0;