如何重新分配zlib inflate函数的输出缓冲区?

时间:2013-08-06 20:27:16

标签: c++ zlib

我正在尝试向内存中的缓冲区充气,这是我之前使用deflate()进行放气的。

问题在于,我似乎无法知道何时在每次调用inflate()时调整输出缓冲区的大小。

Zlib示例没有此问题,因为它们只是假设膨胀的数据不会溢出其缓冲区。

有人解决了这个问题吗?

1 个答案:

答案 0 :(得分:3)

您指的是哪些zlib示例?我所知道的那些没有做出这样的假设。您告诉inflate()输出缓冲区中有多少空间avail_out,它只会写出那么多解压缩数据。缓冲区未溢出。然后,您可以对该数据执行任何操作,并再次致电inflate(),重置next_inavail_in重复使用相同的缓冲区。

您应该阅读this heavily annotated example如何使用zlib。

您是否想要将其全部读入单个缓冲区,正如您所暗示的那样realloc()?在这种情况下,您只看到avail_out已归零,重新分配缓冲区,更新avail_out(和next_out,因为realloc()可能已移动缓冲区)并调用再次inflate()