gpt4 book ai didi

compression - Zlib deflate/inflate 适当的初始化

转载 作者:行者123 更新时间:2023-12-05 05:47:55 24 4
gpt4 key购买 nike

在以“迂腐”的方式使用 zlib 时,我偶然发现了一些不一致的地方,我想自己解决。

对于 inflateInit(),手册指出:

... The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by the caller.

但在下一段中:

... So next_in, and avail_in, next_out, and avail_out are unused and unchanged.

换句话说,手册要求在调用inflateInit()之前初始化next_inavail_in,但同时,它声明无论如何都不会使用它们。这是为什么?在我的例子中,我试图让它们都保持未初始化和初始化为零而没有问题,直到在调用 deflate() 之前进行真正的准备。但严格来说,这违反了手册,除非“必须初始化”意味着我可以将它们初始化为零。但那又何必呢?

请注意,deflateInit() 没有这样的要求:

... The fields zalloc, zfree and opaque must be initialized before by the caller.

为什么不对称?

最佳答案

有人认为 inflateInit() 可以利用压缩数据头中的信息进行初始化。所以接口(interface)要求是初始化next_inavail_in。正如描述所指出的,使用短语“当前版本”和“当前实现”,此类初始化被推迟到 inflate() 的调用。 zlib 的 future 版本可能会做一些不同的事情。 (虽然我怀疑它会。)

deflateInit() 提供输入数据没有看似合理的好处,因此不对称。

关于compression - Zlib deflate/inflate 适当的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70910833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com