4

我正在使用 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 文件中。我认为 tessearact 是由 c++ 编写的。我不知道c++。任何人都可以帮忙吗?或者有人有干净的tesseract吗?

4

2 回答 2

3

来自 Tesseract 文档:

识别的文本以编码为 UTF8 的 char* 形式返回,并且必须使用 delete [] 运算符释放。

换句话说:释放内存是你的责任,所以它是你的泄漏而不是 Tesseracts。

于 2012-05-29T20:50:48.943 回答
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;
于 2012-05-29T20:54:46.067 回答