误写zlib带来的问题
来源:互联网 发布:怎么删除软件 编辑:程序博客网 时间:2024/05/16 17:10
网络通信数据较大,用到了zlib.
最近碰到一个崩溃的问题,追踪后发现zlib的使用有问题。
而后自己写了一段测试代码,确实是使用有问题。
BYTE pCompressData[3] = {0};
DWORD dwAfterCompressSize = 1024;
BYTE* pBitmapData = (BYTE*)malloc(1024*1024);
int iRet = compress( pCompressData, &dwAfterCompressSize, pBitmapData, 1024*1024);
比较容易让人误解的是,iRet的返回值是Z_BUF_ERROR,让人以为zlib正常运行了。
实际上对于zlib来说,它确实正常运行了,但是它访问了不该访问的内存,造成了不可预知的问题;而后程序崩溃,并且定位不到错误,那也就是顺理成章的事情了。
这件事有两个教训:
作为接口的提供者,尽可能多的作参数的合法性检查;当然在这次崩溃的情况下,不是合法性检查不严谨引起的;
作为借口的调用者,尽可能多的作参数的合法性检查;因为一不小心,会访问到不改访问的内存地址。
0 0
- 误写zlib带来的问题
- oracle读不阻塞写带来的问题
- notepad++上写python代码预防缩进带来的问题
- Python缺少zlib的问题
- Spring带来的问题
- 脚本带来的问题
- 在使用zlib时遇到的问题
- zlib压缩库解压失败的问题
- 少写一个“;”,带来不一样的结果
- 扩展类型带来的问题
- 升级libtool带来的问题
- 母版页带来的问题
- 类型转换带来的问题
- 类型转换带来的问题
- synchronized带来的问题 20110330
- 安装字体带来的问题
- tomcat7可能带来的问题
- tomcat7可能带来的问题
- 深入理解java异常处理机制
- UITableView 如何不动态计算返回的cell 的高度
- 几句代码实现轻量级可拖动button
- mysql查询成绩排名显示-两种排名方式
- android之LinearLayout
- 误写zlib带来的问题
- Unity 打包模型的方法
- MATLAB版2048
- Android 系列 3.12保持你的应用程序snappy与StrictMode
- [UIDeviceRGBColor length]: unrecognized selector sent to instance
- mac中程序死机/关闭程序方法(含terminal)
- Toolbar动态隐藏右侧按钮
- Unity 中的坐标系
- 名企笔试:腾讯2016研发工程师笔试题(赛车问题)