2

我正在尝试将之前用 deflate() 放气的东西膨胀到内存中的缓冲区中。

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

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

有人解决了这个问题吗?

4

1 回答 1

4

你指的是什么zlib例子?我认识的人不做这样的假设。你告诉inflate()你的输出缓冲区有多少空间avail_out,它只会写入那么多的解压缩数据。缓冲区没有溢出。然后,您对该数据执行任何您需要做的事情,并再次调用,通过重置和inflate()重用相同的缓冲区。next_inavail_in

您应该阅读这个带有大量注释的关于如何使用 zlib 的示例。

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

于 2013-08-06T23:14:29.827 回答