背景:
同样的C++代码,同版本的gcc和ld,两台不同操作系统的服务器(服务器A的操作系统Red Hat Enterprise Linux Server release 6.2 ,服务器B的操作系统CentOS release 6.10)。
结果:
编译正常通过。服务器A上正常运行。服务器B上运行报错。
原因:
数组内容的复制用了memcpy。因为内存前后有重叠,所以复制后的内容不正确。
办法:
用memmove替换memcpy。
参考:memcpy需要注意的坑
同样的C++代码,同版本的gcc和ld,两台不同操作系统的服务器(服务器A的操作系统Red Hat Enterprise Linux Server release 6.2 ,服务器B的操作系统CentOS release 6.10)。
编译正常通过。服务器A上正常运行。服务器B上运行报错。
数组内容的复制用了memcpy。因为内存前后有重叠,所以复制后的内容不正确。
用memmove替换memcpy。
参考:memcpy需要注意的坑