我正在使用tesseract OCR进行名片阅读。 我有内存泄漏,我无法解决它,我不知道如何。
在我的代码中......
tesseract->Recognize(NULL);
char* utf8Text = tesseract->GetUTF8Text();
GetUTF8Text()方法给出了内存泄漏。 这是记录内存泄漏工具:
tesseract::TessBaseAPI::GetUTF8Text()
operator new[](unsigned long) libstdc++.6.dylib
operator new(unsigned long) libstdc++.6.dylib
malloc libsystem_c.dylib
一些内存泄漏后,应用程序崩溃了。 GetUTF8Text位于baseapi.h文件中。我认为tessea是由c ++编写的。我不知道c ++。 有人可以帮忙吗?或者任何人都有干净的tesseract?
答案 0 :(得分:3)
来自Tesseract文档:
识别的文本作为char *返回,编码为UTF8和 必须使用delete []运算符释放。
换句话说:你有责任释放记忆,所以它是你的泄漏,而不是Tesseracts。
答案 1 :(得分:3)
根据我在baseapi.h中找到的文件。
/**
* The recognized text is returned as a char* which is coded
* as UTF8 and must be freed with the delete [] operator.
*/
char* GetUTF8Text();
完成后,您需要delete []
utf8text
。
tesseract->Recognize(NULL);
char* utf8Text = tesseract->GetUTF8Text();
... //use utf8Text or copy if necessary
delete [] utf8text;