今天继续编写远控,但是中间完成端口部分一直出现错误,最后通过调试定位到了在接收数据后使用memcpy拷贝的时候一直出现缓冲区溢出的导致程序崩溃的错误,目标处正是使用的是memcpy这个函数进行拷贝,这个函数经常用,可是今天的错误真的是莫名其妙,一直盯着看,最后恍然大悟:
我是这样使用的:
memcpy( pProcessList + nSumBytes, &pPerHandle->buf , MAXBODYBYTES ) ;
其中pProcessList是一个结构体指针,错误就出现在这里了,本想pProcessList加上nSumBytes后指针能移动nSumBytes个字节,但是实际上因为pProcessList是一个结构体指针,加上后移动的字节数为:nSumBytes * sizeof(*pProcessList ),因为nSumBytes == 2048,足以造成缓冲区溢出了。
今天真是晕了,犯了这种错误,睡了,脖子都僵硬了!!