打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
zlib的uncompress函数出现Z_BUF_ERROR的原因
函数原型:
int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

函数说明:
uncompress 函数将 source 缓冲区的内容解压缩到 dest 缓冲区。sourceLen  source 缓冲区的大小(以字节计)。注意函数的第二个参数 destLen 是传址调用。当调用函数时,destLen 表示 dest 缓冲区的大小, dest 缓冲区要足以容下解压后的数据。在进行解压缩时,需要提前知道被压缩的数据解压出来会有多大。这就要求在进行压缩之前,保存原始数据的大小(也就是解压后的数据的大小)。这不是 zlib 函数库的功能,需要我们做额外的工作。当函数退出后, destLen 是解压出来的数据的实际大小。

uncompress 若成功,则返回 Z_OK ;若没有足够内存,则返回 Z_MEM_ERROR;若输出缓冲区不够大,则返回 Z_BUF_ERROR。若输入数据有误,则返回Z_DATA_ERROR


出现Z_BUF_ERROR错误的原因:

dest 缓冲区大小不够。

dest 缓冲区大小由第二个参数destLen带入,如果类型不是uLongf,可能会因类型不同而出现类型转换,导致uncompress得到的值变小,从而也出现Z_BUF_ERROR错误。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
zlib的安装与使用
zlib 与 libpng 的配置与使用-转载--爱蓝天的网络日记
zlib用法简单说明
使用zlib对swf压缩文件进行解压缩
Zlib文件压缩和解压
C语言字符串操作总结大全(超详细)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服