2 q   wert  yuiop q___wert__yuiop 于 2017.01.10 14:33 提问

zlib库压缩后解压时访问异常
//解压文件  MAX_FILE_SIZE 6M - 文件大小一般为1.6M
//path 为路径
//len为压缩文件的大小
FILE* fp1 = NULL;  
if(fopen_s(&fp1, path, "rb") != 0)
{
    int  errnow = GetLastError();
    return -3;
}
unsigned char*  pBufferSrc = new unsigned char[MAX_FILE_SIZE];  
unsigned char*  pBufferDes = new unsigned char[MAX_FILE_SIZE];  
//置零  
memset(pBufferSrc, 0, MAX_FILE_SIZE);  
memset(pBufferDes, 0, MAX_FILE_SIZE);  
//读取整个文件到缓冲区  
fread(pBufferSrc, sizeof(unsigned char), MAX_FILE_SIZE-1, fp1);  

//会在这里报异常,访问冲突
int nError = uncompress(pBufferDes, &desLen, pBufferSrc, (unsigned long)len);

自己用compress压缩的文件,用uncompress解压时报访问冲突,未处理异常0XC0000005

1个回答

shen_wei
shen_wei   Ds   Rxr 2017.01.10 15:02
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用zlib开源库解压时内存崩溃问题解决
最近一个项目中用到了解压缩,打算使用zlib开源库封装quazip在qt中开发,但是在解压缩过程中遇到了内存崩溃现象,错误指向了inflate_fast里面的汇编模块。最后经过分析发现是编译zlibwapi.dll的时候使用汇编模块造成的bug。 解决方法用c编译方式取代汇编方式,在zlib源码的zlibvc工程属性-预处理器定义里面去掉 ASMINF 定义,这样就可以屏蔽掉汇编模块了。 但是
使用Zlib库进行文件的压缩和解压
zlib介绍 zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权 配置 我是从网上直接下载了zlib的dll文件的,压缩包具体有几个部分,分别是头文件zconf.h,z
zlib库内存压缩解压缩函数的C++便利性封装
zlib是提供数据压缩用的函数库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表,普遍为许多软件所使用。 在使用zlib进行内存压缩解压缩的的时候主要用到的函数就是两个compress/uncompress。为了在C++中使用更方便,做一些便利性封装是非常必要的。 下面的代码中主要对zlib的内存压缩和解压缩进行了C++封装,出错以异常抛出。
Zlib库对网页中deflate压缩数据的解压
Zlib解压deflate算法压缩后的数据
用zlib压缩与解压数据
linux中有开源的zlib-1.1.4,只要在程序的lib库中包含上libz.a在程序中#include "zlib.h"就可以了.压缩的函数是:int compress(Byte *sBuffer, uLong& nDataSize, const Byte* buff, const uLong len);解压函数是:int uncompress(Byte *sBuffer, u
Linux下使用zlib实现数据压缩解压
本文举例说明了:项目过程中字符串数据传输的场景下(文件名列表),如何使用数据压缩减少带宽的开销; deflate(RFC1951):一种压缩算法,使用LZ77和哈弗曼进行编码; zlib(RFC1950):一种格式,是对deflate进行了简单的封装,他也是一个实现库(delphi中有zlib,zlibex) gzip(RFC1952):一种格式,也是对deflate进行的封装。 gzip = gzip头 + deflate编码的实际内容 + gzip尾 zlib = zlib头 + deflate编码的实
利用zlib库对HTTP收到的gzip数据解压
1、首先说为什么采用zlib解压,因为zlib可以解压内存数据。 2、下载zlib库后,自己在projcts目录里面根据需要编译lib库 3、静态链接只需要zlib.h ;zconf.h;zlib.lib三个文件即可(动态的不介绍了) 4、解压函数: /* HTTP gzip decompress */ int httpgzdecompress(Byte *zdata, uLong nzd
使用zlib库函数实现http报文的解压
最近做项目的时候遇到了一个问题,那就是需要获得http响应报文主体内容,一般响应主体会通过gzip格式进行压缩,本文就是针对这种情况所写的,可以进行内存解压,而不需要保存至本地文件再解压。至于chunked分块传输方式要先进行报文重组再进行解压,本文暂不考虑。 下图是我抓取的一个http数据包,由Content-Encoding:gzip\r\n知该报文经过了gzip压缩,而压缩后的长度可以根据
使用zlib解压标准zip文件
zlib库可以解压zip压缩数据,但是在做标准zip文件解压的时候发现会出现问题,原因其实是因为zlib的压缩格式与标准zip的压缩格式有那么一点区别,最初这个问题让我很纠结,在经过实验后,我将标准zip压缩的文件与使用zlib库函数压缩的文件使用二进制编辑器打开时发现了它们的一点点区别,使用zlib库函数压缩后的数据与标准zip压缩后的数据相比在头部多了个0x9c78,(而且数据的尾部也稍有不同
C++ 压缩文件及文件夹 使用zlib开源库
C++ 压缩文件及文件夹 使用zlib开源库   使用zlib-1.2.11版本的开源库,实现我需要的对文件或者文件夹的压缩,查阅了一些博客大牛的资料,后面根据自己的需要修改。下面给出我的代码: #include "stdafx.h" #include #include #include #include #include "zip.h" #include "unzip.h" #in