icu RegexMatcher内存未释放

时间:2017-02-04 18:48:05

标签: c++ regex icu

当我使用RegexMatcher(来自icu api)时,内存未被释放。 在完成重置后,内存不会被释放,每次重置都会导致更多内存丢失(inputBuffer是UnicodeString)。

似乎只是创建一个新的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 个答案:

答案 0 :(得分:1)

隐藏在icu docs中的是这条评论

  

当应用程序终止时,它可以选择调用函数u_cleanup(void),这将释放已由ICU库分配和保存的任何堆存储。在调试或测试应用程序时使用内存泄漏检查工具时,会发生u_cleanup()的主要好处。如果没有u_cleanup(),ICU库保存的内存将被报告为泄漏。