我正在尝试在没有任何外部库的情况下编写自己的 png 阅读器。我需要使用 Zlib 来解压 png 的 IDAT 块。我已经设法在 python 中使用它来完成它zlib.decompress(),并且我正在尝试在 C 中复制它。我正在阅读 zlib 的文档并发现uncompress()它,但是它需要一个我不知道的目标长度。
我可以将目标设置为比 png 可能的更大,但这似乎是一种逃避,如果我有一张非常大的图片,这会破坏我的程序。但是,我发现了一个inflate()可以多次使用的功能。如果我能做到这一点,我可以realloc()在每次通话需要时记忆。然而,我不太了解它的文档,也没有找到很多这类事情的例子。谁能提供一些代码或帮助我指出正确的方向?