首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

来帮忙看看这段代码解决方法

2012-02-08 
来帮忙看看这段代码我写了以下一段代码,目的是按一定间隔覆盖一个BYTE数组内的内容BYTE*pLinenewBYTE[140

来帮忙看看这段代码
我写了以下一段代码,目的是按一定间隔覆盖一个BYTE数组内的内容
                 
                    BYTE   *   pLine   =   new   BYTE[1400];
  long   mCount   =   1400;
BYTE   newValue   =   (mCount++   %   3   ==   0)   ?   0xFF   :   0;
                  //设置newValue   的值为255或者0
for   (int   i   =   0;   i   <   16;   i++)
{
if(i   %   2   ==0)
{
                                  memset(pLine,   newValue,24);
                                    //每次填充24字节
}
pLine   +=   24;
                                    //指针移动24字节

}

这样一来,在我设想中,pLine指向的变量,应该是被按照一定间隔填充了FF和0的,但实际情况却不是如此,我哪里想错了吗?

[解决办法]
你只在i能整除2的时候填充了。
而且你每次都对pLine进行加运算。那最后一次填充后,pLine已经指到申请到的内存的尾部了。你又怎么能看到你真正填充的数据呢??
最后你连申请的内存都没办法释放。
用这段代码试试:
BYTE * pLine = new BYTE[1400];
BYTE * ptr=pLine;
long mCount = 1400;
BYTE newValue = (mCount++ % 3 == 0) ? 0xFF : 0;
//设置newValue 的值为255或者0
for (int i = 0; i < 16; i++)
{
if(i % 2 ==0)
{
memset(ptr, newValue,24);
//每次填充24字节
}
ptr += 24;
//指针移动24字节

}
delete [] pLine;

热点排行