Realloc буфер изображения в Turbojpeg CPP

Я использую Turbojpeg для чтения изображений.

Я делаю что-то вроде этого:

m_data = tjAlloc(MAX_RAW_SIZE);
c_jpeg_buffer = tjAlloc(MAX_RAW_SIZE);
tjDecompressHeader2(jpegDecompressor, c_jpeg_buffer, _jpegSize, &tj_width, &tj_height, &jpegSubsamp);
tjDecompress2(c_jpegDecompressor, m_data, _jpegSize, c_jpeg_buffer, tj_width, 0/*pitch*/, tj_height, TJPF_GRAY, TJFLAG_FASTDCT);
tjFree(c_jpeg_buffer);
tjFree(m_data);

Я хочу перераспределить m_data и c_jpeg_buffer в случае, если _jpegSize или (tj_width * tj_height) слишком велики. В документации turbojpeg предполагается, что это произойдет автоматически, если я использую tjCompress2(...) или tjTransform(...). Это ничего не говорит о том, что происходит в этом случае. Предположим, я перераспределил буферы - будет ли безопасно использовать tjFree()?

1 ответ

Решение

Для будущих пользователей turboJpeg... RTFM...

Если вы отправляете заранее выделенный буфер, вам нужно передать его размер. И сам буфер, и размер могут быть изменены.

Другие вопросы по тегам