Tesseract утечка памяти

Происходит утечка памяти в коде. Ниже представлены снимки памяти

void CaptureScreen() { #pragma comment(lib, "GdiPlus.lib") /* наш многострадальный lib-файл */
using namespace Gdiplus; /* как хочешь, но мне не в кайф постоянно писать Gdiplus:: */

static const GUID png =
{ 0x557cf406, 0x1a04, 0x11d3, { 0x9a, 0x73, 0x00, 0x00, 0xf8, 0x1e, 0xf3, 0x2e } };


    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

    HDC scrdc, memdc;
    HBITMAP membit;
    // Получаем HDC рабочего стола
    // Параметр HWND для рабочего стола всегда равен нулю.
    HWND test = FindWindow(NULL,0);
    scrdc = GetDC(test);
    // Определяем разрешение экрана
    int Height, Width;
    Height = 40;
    Width = 80;
    // Создаем новый DC, идентичный десктоповскому и битмап размером с экран.
    memdc = CreateCompatibleDC(scrdc);
    membit = CreateCompatibleBitmap(scrdc, Width, Height);
    SelectObject(memdc, membit);
    // Улыбаемся... Снято!
    BitBlt(memdc, 0, 0, Width, Height, scrdc, 1510, 870, SRCCOPY);
    HBITMAP hBitmap;
    hBitmap = (HBITMAP)SelectObject(memdc, membit);
    Gdiplus::Bitmap bitmap(hBitmap, NULL);
    bitmap.Save(L"./screen.jpg", &png);
    DeleteObject(hBitmap);
    //GdiplusShutdown(gdiplusToken);}
void Tesseract(){checktesseract += 1;
 CaptureScreen();
 char* outText;
tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng")) {
    fprintf(stderr, "Could not initialize tesseract.\n");
    exit(1);
}

// белый список
api->SetVariable("tessedit_char_whitelist", "01234567890");

// Open input image with leptonica library
Pix* image = pixRead("./screen.jpg"); // изображение с CaptureScreen
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
if (!outText) {
    cout << checktesseract << " Номер .Ошибка считывания OutText" << endl;
}
else {
    Speed = atoi(outText);
};

// Destroy used object and release memory
api->End();
pixDestroy(&image);
remove("./screen.jpg");}

Снимки памяти подсказывают что утечка происходит

 tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();

84 байта утекают при каждом повторе функции Tesseract()


Ответы (0 шт):