首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于memcpy解决办法

2012-03-12 
关于memcpyC/C++ code{BYTE m_ucCommandBuf[1024] //发送缓冲memset(&flash_data, 0, sizeof(flash_data)

关于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呢?
这应该是结构体的一个实例才可以。

热点排行