2013-08-27 3 views
0

이미지를 읽는 데 turbojpeg를 사용하고 있습니다. 나는 경우에 _jpegSize 또는 (tj_width * tj_height)를 M_DATA 및 c_jpeg_buffer를 realloc 함수하려는turbojpeg cpp의 realloc 이미지 버퍼

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); 

가 너무 큰 :

나는이 라인을 따라 뭔가를하고 있어요. turbojpeg 문서에서는 tjCompress2 (...) 또는 tjTransform (...)을 사용하는 경우이 문제가 자동으로 발생한다고 제안합니다. 이 경우에 어떤 일이 발생하는지에 대해서는 아무 것도 말하지 않습니다. 버퍼를 다시 할당한다고 가정합니다. tjFree()를 사용하는 것이 안전할까요? 당신이 미리 할당 된 버퍼를 보낼 경우 turboJpeg ... RTFM의 미래 사용자의

답변

0

...

, 당신은이 크기의 통과해야합니다. 둘 다 자체를 버퍼링하고 크기가 변경 될 수 있습니다.