memcpy() 函数 window 与 linux 下区别

本文深入探讨了memcpy函数在Windows和Linux平台上的不同表现,特别是在处理同一数组内数据复制时,复制区域重叠的情况。在Windows下,重叠区域的数据不会被覆盖;而在Linux环境下,重叠区域的数据将被覆盖,可能导致数据丢失。文章提供了规避此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void *memcpy(void *str1, const void *str2, size_t n)

char achData[1500], int len, pos;

memcpy(achData, achData + pos, len);

window下:

源内存地址 和 目的内存地址 是同一个数组是, pos 小于len  也就是复制区域会有重合的部分,重复部分不会被覆盖掉。

linux下:(ubunut16.06 g++5.4)

源内存地址 和 目的内存地址 是同一个数组是, pos 小于len  也就是复制区域会有重合的部分, 重复部分数据会被覆盖掉,导致数据丢失。

总结:

调用memcpy函数,同数组之间数据复制,使用以下写法

char achTemp[1500];

memcpy(achTemp, achData + pos, len);

memcpy(achData, achTemp, len);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值