2017-02-04 13 views
2

Память не освобождается при использовании RegexMatcher (из icu api). Память не освобождается после сброса, каждый сброс заставляет потерять больше памяти (inputBuffer - UnicodeString).icu RegexMatcher память не освобождена

кажется, что только создание нового RegexMatcher объекта, а затем удалить его утечки памяти ...

Любые идеи, что я пропускаю, пожалуйста?

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

Скрытые внутри ICU Документы этого комментарий

Когда приложение прекращает, это необязательно может вызвать функцию u_cleanup (пустоты), который освободит любое хранилище кучи, которая была выделена и удерживается библиотеки ICU. Основное преимущество u_cleanup() происходит при использовании инструментов проверки утечки памяти при отладке или тестировании приложения. Без u_cleanup() память, хранящаяся в библиотеке ICU, будет сообщаться как утечка.