2009-10-26 53 views
1

我使用CFRelease釋放從CFStringTokenizerCreate調用獲得的CFStringTokenizerRef。但儀器在這個區域報告內存泄漏。我錯過了什麼嗎?如何釋放CFStringTokenizerCreate創建的內存?

 

    CFStringTokenizerRef tokenRef = CFStringTokenizerCreate(NULL, 
            (CFStringRef)contents, 
            CFRangeMake(0, contents.length), 
            kCFStringTokenizerUnitWordBoundary, 
            NULL); 

    CFStringTokenizerTokenType tokenType; 
    // leak reported here 
    while ((tokenType = CFStringTokenizerAdvanceToNextToken(tokenRef)) != kCFStringTokenizerTokenNone) 

} 

CFRelease(tokenRef); 
+0

在這段時間之後,似乎有一個缺失的大括號,這與CFRelease不在同一個範圍內。這是一個複製/粘貼錯誤? – 2009-12-18 12:09:34

回答

0

CFStringTokenizerCreate跟在Create Rule之後。所以你按預期打電話。

這段時間後,似乎有一個缺失的大括號,這與CFRelease不在同一範圍內。這是一個複製/粘貼錯誤?

+0

所提供的代碼有一個語法錯誤,因爲'while'需要一個跟在條件之後的語句,並且所顯示的代碼沒有(條件緊接着緊跟着大括號外部語句或函數/方法體)。我認爲現在評估什麼範圍內的東西還爲時尚早,直到顯示的代碼有效。 – 2010-05-23 03:32:46