turbojpeg cpp中的realloc图像缓冲区

时间:2013-08-27 12:40:56

标签: c++ malloc free libjpeg-turbo turbojpeg

我正在使用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);

如果_jpegSize或(tj_width * tj_height)太大,我想重新分配m_data和c_jpeg_buffer。 turbojpeg文档表明,如果我使用tjCompress2(...)或tjTransform(...),这将自动发生。它没有说明在这种情况下会发生什么。假设我重新分配缓冲区 - 使用tjFree()仍然是安全的吗?

1 个答案:

答案 0 :(得分:0)

对于turboJpeg的未来用户... RTFM ......

如果发送预先分配的缓冲区,则需要传递它的大小。两者都缓冲自身,大小可能会改变。