关于memcpy
- C/C++ code
{ BYTE m_ucCommandBuf[1024]; //发送缓冲 memset(&flash_data, 0, sizeof(flash_data));//flash_data是一个结构体,长度为4684 flash_data.m_nTimer = 110; int nBuffLength =sizeof(flash_data); int nSend = 0; m_strOtherIP = "192.168.0.233"; while (nBuffLength >1024) { memset(m_ucCommandBuf,0,sizeof(m_ucCommandBuf)); memcpy(m_ucCommandBuf,&flash_data+nSend, 1024); this->SendTo(m_ucCommandBuf, 1024, m_nDestPort, m_strOtherIP); nBuffLength = nBuffLength - 1024; nSend += 1024; if (nBuffLength>0) { memset(m_ucCommandBuf,0,sizeof(m_ucCommandBuf)); memcpy(m_ucCommandBuf,&flash_data+nSend, nBuffLength); this->SendTo(m_ucCommandBuf, nBuffLength, m_nDestPort, m_strOtherIP); } this->SendTo(m_ucCommandBuf, nBuffLength, m_nDestPort, m_strOtherIP); }一个4684的结构体,我切割了发送,在第三次发送的时候memcpy出错,求指点
[解决办法]
memcpy(m_ucCommandBuf,&flash_data+3072, 1024);//你加3072实际上是加了3072*sizeof(flash_data)
[解决办法]
哦,原来你放到了循环体的外面了。
memset(&flash_data, 0, sizeof(flash_data));//flash_data是一个结构体,长度为4684
这里,flash_data既然是一个结构体,又怎能memset呢?
这应该是结构体的一个实例才可以。