3

これを使用しない場合、アナライザーが以下のコードでリークを叫んでいるので、 clang_analyzerの重要性は何ですか。

#ifndef __clang_analyzer__
CGPathRef pathWithRoundRect(CGRect iRect, CGFloat iRadius) {
    CGMutablePathRef returnVal = CGPathCreateMutable();
    CGPathMoveToPoint();
    CGPathAddArcToPoint();
    CGPathAddArcToPoint();
    CGPathAddArcToPoint();
    CGPathAddArcToPoint();
    CGPathCloseSubpath(returnVal);
    return returnVal;
}
#endif
4

1 に答える 1

4

__clang_analyzer__はマクロであり、プログラムがアナライザー用にコンパイルされるときに定義されます(Clangユーザーズマニュアルを参照)。

それが定義されているとき、との間のコードは#ifndefコンパイル#endifされていません。つまり、アナライザーはそれを認識CGMutablePathせず、名前がそれを返すことを示さない関数から返している所有者についてあなたに伝えることができません所有する参照。

create関数名の先頭に追加することを検討する必要があります。

于 2012-05-07T19:52:20.693 に答える