读书人

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

发布时间: 2012-02-08 19:52:21 作者: rapoo

来帮忙看看这段代码
我写了以下一段代码,目的是按一定间隔覆盖一个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;

读书人网 >VC/MFC

热点推荐