C++中memcpy()函数出现段错误

Buff中的数据,按照规律复制出来到ucCAT48Data里面,为什么运行不久之后就在memcpy()函数处出现段错误?什么越界了吗?怎么改?
while(l_iSndDataLen < usLen)
{
offset = 6 + l_iSndDataLen;
DataLen =(int) (*(Buf+offset+1))256 +((Buf+offset+2));

         //将缓存数据进行备份
         memcpy(ucCAT48Data,(unsigned char *)(Buf+offset),DataLen);
         l_iSndDataLen     =  offset+DataLen;
         qDebug("1:i=%d,SndDataLen=%d,offset=%d,usLen=%d,DataLen=%d",i,l_iSndDataLen,offset,usLen,DataLen);
         i++;           
         memset(ucCAT48Data,0,sizeof(ucCAT48Data));

     }

题主代码格式能再贴一遍吗,Datalen看不懂是怎么算的。段错误一般来说是内存越界问题,可以好好检查一下Datalen的大小,offset的大小

Buff中的数据,按照规律复制出来到ucCAT48Data里面,DataLen指的是要复制数据的长度,在Buff内提取。
while(l_iSndDataLen < usLen)
{
offset = 6 + l_iSndDataLen;
DataLen =(int) (*(Buf+offset+1))256 +((Buf+offset+2));

//将缓存数据进行备份
memcpy(ucCAT48Data,(unsigned char *)(Buf+offset),DataLen);
l_iSndDataLen = offset+DataLen;
qDebug("1:i=%d,SndDataLen=%d,offset=%d,usLen=%d,DataLen=%d",i,l_iSndDataLen,offset,usLen,DataLen);
i++;
memset(ucCAT48Data,0,sizeof(ucCAT48Data));

}