关于缓冲区指针的问题
最近发现程序代码中的一个错误,但是结果没弄明白。例如:
byte* tmpbuf = kglData.getData(); //获取缓冲区指针
uint length = kglData.getLength();//获取缓冲区长度
uint newlen = this->dealData(tmpbuf,length);//处理数据
dealData(tmpbuf,length)的实现:
uint TSerialportKgl::dealData(byte* kglDat,uint len)
{
//*****具体处理代码略去
kglData += 6;
memcpy(kglDat,tmpbuffer,tmpbuffer.length);
kglData -=9;//注意,这个地方应该是-6的,由于书写错误,写成了9
return m_length;
}
等dealData函数返回之后,我查看tmpbuf指针的缓冲区,竟然智能的自动变成他原来的位置,也就是相当与上面的代码书写错误的地方是-6的效果。 新手,不太明白如果缓冲区指针往前移动到他原始位置之前,他能智能的自动回到他原始的位置吗?
[解决办法]
dealData(byte* kglDat,uint len)
这个dealData(tmpbuf,length)调用是将tmpbuf指针的值传到kglDat了,你可以把kglDat当成一个局部变量,函数内对kglDat指针的修改,不会影响到外面的变量。
[解决办法]
同LS