有没有办法让clang知道自定义opaque类型引用计数?

时间:2013-12-22 07:02:19

标签: c clang reference-counting opaque-pointers

我有一些opaque类型,并且实现了一个模仿Core Foundation的引用计数语义。这很有效,除了clang警告我半有效的潜在泄漏。

MyTypeRef MyTypeRefCreateWithSomething(…) {
    MyTypeRef value = MyTypeRefCreate(…);
    MyTypeRef adjustedValue = MyTypeRefCreate(…);
    MyTypeRefRelease(value);
    return adjustedValue; // clang says that this might be a leak of `value`… 
     // which is only true if something goes wrong with reference counting.
 }

我正在寻找像attribute_cf_consumed这样的东西或者一种简单的方法来制作我自己的版本。

作为参考,这就是我目前如何使警告静音。它起作用,但在我看来,它只是留下警告一样糟糕。(我如果if声明围绕MytypeRelease调用free

void MyTypeRelease(MyTypeRef degree) {
    ((MyMutableTypeRef)degree)->refCount--;
    #ifndef __clang_analyzer__
    if ((degree->refCount <= 0) && !MyTypeIsNull(degree)) {
    #endif /*__clang_analyzer__*/
        free((CTJUMTMutableScaleDegree)degree);
    #ifndef __clang_analyzer__
    }
    #endif /*__clang_analyzer__*/
}

0 个答案:

没有答案