具体说一下使用环境吧,就是我通过网络从设备端获得一段数据buf以及其长度,然后我将这段内存拷贝到我自己的结构体中,这都没有问题,关键在于我指定的拷贝长度值是从网络获得的数据buf的长度。
有什么问题呢,由于通信双方扩展了各自的结构体,也就是buf的长度比原来增大了。由于我之前的这种拷贝方式,使用老的软件访问新的设备时,数据buf的长度就比结构体的长度要大,memcpy就会将一段结构体之后的内存指定了数值,这将带来不可测的问题。
因此在网络通信时,在使用memcpy时长度的指定最好使用结构体的长度,这样新软件访问老设备,数据缺失不是大的问题,因为老设备本身不具备这样的能力,但数据超出则是可怕的事。