CodeGuard调试报错

bjelement 2008-05-20 02:38:47
// 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
------------------------------
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjelement 2008-05-23
  • 打赏
  • 举报
回复
谢谢大家问题解决了 ,问题不在这。
gyj_china 2008-05-22
  • 打赏
  • 举报
回复
你这么加有可能是越界了
Waiting4you 2008-05-20
  • 打赏
  • 举报
回复
函数本身好像没什么问题,你给pRgb和pYuv的内存有多少?是不是越界了?
还有CodeGuard也不要全信。
  • 打赏
  • 举报
回复
(*r) +=4;//这样试试
erdgzw 2008-05-20
  • 打赏
  • 举报
回复
没见过这么用的.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧