编译都没问题就是执行时其中一个判断语句说非法接入
时间:2011-12-12
来源:互联网
C/C++ code
源程序比较大分析不过来,是一个读取DIB进行判断的函数。老是在if((BYTE)0 == *(lpSrcDefect+1) )这里出错。想不懂为什么。图是32位的。
UINT CDetect::PadCompare(void* TobeExamBit,void* StandarBit, BITMAPINFO* DibInfo,UINT m_PadPass,UINT m_HolePass,UINT m_HoleMove,CRect PadRect,CRect HoleRect) { unsigned char * lpSrcStandard; // 指向源标准图像的指针 unsigned char * lpSrcDefect; UINT lLineBytes=(DibInfo->bmiHeader.biBitCount) * (DibInfo->bmiHeader.biWidth); //UINT TOTAL=lLineBytes*(DibInfo->bmiHeader.biHeight); int DefectCount=0; UINT StandardCount=0; UINT DifferentCount=0; UINT MovePix=0; UINT SHoleCount=0; UINT DHoleCount=0; UINT DetectResult=0; UINT Hundred=100; UINT PadRectSize=PadRect.Height() * PadRect.Width(); UINT HoleRectSize=HoleRect.Height() * HoleRect.Width(); // lpSrcStandard=(unsigned char *)TobeExamBit+20000; // BYTE n=*lpSrcStandard; for(int i=0;i<PadRect.Height();i++) { for(int j=0;j<PadRect.Width();j++) { lpSrcDefect=(unsigned char *)TobeExamBit + lLineBytes * (PadRect.top - 1 - i) + 4 * ( PadRect.left + j ); if((BYTE)0 == *(lpSrcDefect+1) ) { DefectCount++; } lpSrcStandard=(unsigned char *)StandarBit + lLineBytes * (PadRect.top - 1 - i) + 4 * ( PadRect.left + j ); if((BYTE)0 == *lpSrcStandard) { StandardCount++; } } }
源程序比较大分析不过来,是一个读取DIB进行判断的函数。老是在if((BYTE)0 == *(lpSrcDefect+1) )这里出错。想不懂为什么。图是32位的。
作者: darkwhitesnow 发布时间: 2011-12-12
有没有越界?
作者: ouyh12345 发布时间: 2011-12-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28