2017-02-04 30 views
2

RegexMatcher(icu apiから)を使用するとメモリが解放されません。 リセットを実行するとメモリが解放されず、リセットするたびにメモリが失われます(inputBufferはUnicodeString)。icu RegexMatcherメモリが解放されていません

私が欠けているものを任意のアイデア

...ちょうど新しいRegexMatcherオブジェクトを作成し、それがメモリリーク削除することをしてくださいようですか? ICUのドキュメントの中に隠さ

UErrorCode matcherStatus = U_ZERO_ERROR; 
RegexMatcher * lastWordMatcher = new RegexMatcher(".*(^|\\p{Z})(\\S+)$", UREGEX_ERROR_ON_UNKNOWN_ESCAPES | UREGEX_UWORD, matcherStatus); 

UnicodeString lastWord; 

lastWordMatcher->reset(inputBuffer); 
if (lastWordMatcher->find(matcherStatus)) 
{ 
    lastWord = lastWordMatcher->group(2, matcherStatus); 
} 
delete lastWordFinder; 

答えて

1

アプリケーションが終了されると、それは場合により割り当てられ、保持された任意のヒープ記憶域を解放するであろう、機能u_cleanup(ボイド)このコメント

呼び出すことができるされていますICUライブラリ。 u_cleanup()の主な利点は、アプリケーションのデバッグまたはテスト時にメモリリークチェックツールを使用する場合です。 u_cleanup()がなければ、ICUライブラリによって保持されているメモリはリークとして報告されます。

関連する問題