C++中内存重叠问题如何解决?

本文探讨了C++中的内存重叠问题,通过示例解释了memcpy和strcpy在处理内存重叠时可能引发的问题,并介绍了memmove函数的优势。文章还提供了自己实现的memmove函数代码,以确保在内存重叠时正确处理数据拷贝。
摘要由CSDN通过智能技术生成

本文和大家分享的主要是C++中的内存重叠的解决办法,希望对大家学习C++有帮助,一起来看看吧。

  . 内存重叠 ,直到做到一个笔试题才知道了什么是内存重叠。先上题目吧,是一个淘宝的笔试题,当时有点懵,不知道这个名词是啥子意思。

  . 题目:补充下面函数代码:

  如果两段内存重叠,用memcpy函数可能会导致行为未定义。 而memmove函数能够避免这种问题,下面是一种实现方式,请补充代码。

  .

  #include using namespace std;voidmemmove(void* str1,const void* str2,size_t n){

  char* pStr1= (char*) str1;

  const char* pStr2=(const char*)str2;

  if ( ) {

  for(size_t i=0;i!=n;++i){

  *(pStr1++)=*(pStr2++);

  }

  }

  else{

  pStr1+=n-1;

  pStr2+=n-1;

  for(size_t i=0;i!=n;++i){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值