CodeGuard调试报错
// converts palette
void TOSD::rgb24_yuv444 (int n, BYTE *pRgb, BYTE *pYuv)
{
int i;
BYTE *r, *g, *b, *y, *u, *v, *a;
r = pRgb + 2;
g = pRgb + 1;
b = pRgb + 0;
y = pYuv + 1;
u = pYuv + 2;
v = pYuv + 3;
a = pYuv + 0;
for (i=0; i<n; i++)
{
*y = rgb2y (*r, *g, *b);
*u = rgb2u (*r, *g, *b);
*v = rgb2v (*r, *g, *b);
if ( (i == 0x7f) || (i == 0xfa))
*a = 0;
else
*a = 0xff;
if (i == 0xfc)
*a = 0x7f;
r+=4;//报错
g+=4;//报错
b+=4;//报错
y+=4;//报错
u+=4;//报错
v+=4;//报错
a+=4;//报错
}
}
CodeGuard报错如下:
------------------------------
Pointer arithmetic overrun
0x00AB265A+4,
0X00AB225C
TOSD::rgb24_yuv444(ing,unsigned char*,unsigned char*)
TOSD::Bmp2OSD(Classes:TMemoryStream*,Classes::TMemoryStream *)
TOSD::DisplayOSD()
TMyThread:Execute()
0x4003601F
0x400067CE
------------------------------