关于MEMCPY的BUG

来源:互联网 发布:wps表格怎么匹配数据 编辑:程序博客网 时间:2024/05/07 08:33

背景

该BUG出现memcpy函数接口上,但在UBUNTU16.04和CENTOS 7.0上有两种不同体现

用例

char buf[8]={0,1,2,3,4,5,6,7};memcpy(&buf[2],&buf[4],4);UBUNTU上buf的内容为:0,1,4,5,6,7,6,7CENTOS上buf的内容为:0,1,7,7,7,7,6,7

分析

该拷贝涉及到自己内存的拷贝,建议使用如下函数

char mst_api_datacp(char *buf,int offset_byte,int len)  {       char *pbuf=ms_null;    ms_malloc_ret(pbuf, len, "pbuf", -1);    ms_memcpy(pbuf,&buf[offset_byte],len);    ms_memcpy(buf,pbuf,len);    ms_demalloc(pbuf);    return 0;}