关于ZLIB里面解压缩返回Z_BUF_ERROR错误,跟帖有分!!
使用ZLIB进行压缩,解压缩,在Debug下面运行的很好,可是在Release下面,确出错,返回Z_BUF_ERROR,说缓冲区太小,可是我把缓冲区设置的很大,也没有用!!
调用的代码:
ur = uncompress(pUncom,&uCom,pBuffer,PageSize);
已经检查了PageSize的大小没有问题
有用过的高手,给点意见!!
PS:从新建立一个新工程,在Debug和Release下面都能用,感觉还是原来工程的代码有些问题,可是在Release模式下面又没法调试,大家给点意见啊!!
[解决办法]
仔细比较下先建的工程的Release版本与原来的Release工程的设置有啥不同。
PS:Release编译选项里添加生成Debug信息项,可以进行调试的
[解决办法]
缓冲区所使用的内存管理器要与zlib的一致。
[解决办法]
楼主的问题,很多人都碰到过,我一般采取以下手段
1. 注意程序中减少对debug类函数的依赖;
2. 要阶段性的输出release版本,这样问题更容易定位,否则到了最终发布的时候,出了问题,定位很困难
3. 如果你的程序Debug版本能使用,但编译成Release版本就用不了,也许下面介绍的调试Release程序方法会对你有所帮助:
步骤如下:
1、在Project Settings里选Settings For为All Configurations。
2、在C/C++标签中,Debug info 选 Program Database。
3、在Link 标签中,Category选 Debug,选中Debug info 复选框和Microsoft format。
现在就可以像在调试版本中那样设置断点进行测试了,由于代码优化,有些变量观察不到,行的运行顺序可能也会不同。
说明:ASSERT宏在发行版本中不起作用,而应该用VERIFY来进行发行版的调试。如果发行版本运行有问题,可以先禁止所有代码优化(Project -> Settings -> C/C++标签中的Optimizations选为Disabled)再进行调试。