int UnCompress(const char * src, int len) { z_stream strm; strm.zalloc = NULL; strm.zfree = NULL; strm.opaque = NULL; strm.avail_in = len; strm.next_in = (Bytef *)src; int err = -1, ret = -1; err = inflateInit2(&strm, MAX_WBITS + 16); if (err == Z_OK) { while (true) { char buffer[4096] = { 0 }; strm.avail_out = 4096; strm.next_out = (Bytef *)buffer; int code = inflate(&strm, Z_FINISH); m_unzip_buffer.Memcpy(buffer, 4096 - strm.avail_out); if (Z_STREAM_END == code || Z_OK != code) { break; } } } inflateEnd(&strm); return err; }