我正在尝试将之前用 deflate() 放气的东西膨胀到内存中的缓冲区中。
问题是我似乎不知道何时在每次调用 inflate() 时调整输出缓冲区的大小。
Zlib 示例没有这个问题,因为它们只是假设膨胀的数据不会超出其缓冲区。
有人解决了这个问题吗?
你指的是什么zlib例子?我认识的人不做这样的假设。你告诉inflate()
你的输出缓冲区有多少空间avail_out
,它只会写入那么多的解压缩数据。缓冲区没有溢出。然后,您对该数据执行任何您需要做的事情,并再次调用,通过重置和inflate()
重用相同的缓冲区。next_in
avail_in
您应该阅读这个带有大量注释的关于如何使用 zlib 的示例。
您是否想将其全部读入单个缓冲区,正如您所暗示的那样realloc()
?在这种情况下,您只需看到它avail_out
已经变为零,重新分配缓冲区,更新avail_out
(并且next_out
因为realloc()
可能已经移动了缓冲区)并inflate()
再次调用。