博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer 之 memcpy
阅读量:6701 次
发布时间:2019-06-25

本文共 456 字,大约阅读时间需要 1 分钟。

1.该题目看似简单,但要考虑以下两点

 (1) 接口设计的通用性

 (2)需要考虑内存重叠的情况

以下为代码:

  1. void mymemcpy(void *dst, const void *src, size_t num)
  2. {
  3.     assert((dst != NULL) && (src != NULL));
  4.     const char *psrc = (const char*) src;
  5.     char* pdst = (char*)dst;
  6.     if (pdst > psrc && pdst < psrc + num) //如果内存发生重叠,需要进行倒序拷贝
  7.     {
  8.         for (int i = num - 1;i != -1; --i)
  9.         {
  10.             pdst[i] = psrc[i];
  11.         }
  12.     }
  13.     else
  14.     {
  15.         for (size_t i = 0;i < num;i++)
  16.         {
  17.             pdst[i] = psrc[i];
  18.         }
  19.     }
  20. }

 

转载于:https://www.cnblogs.com/sxgloverr1314/p/10604605.html

你可能感兴趣的文章
struct sockaddr与struct sockaddr_in的区别和联系
查看>>
什么是整洁的代码(Clean Code)?
查看>>
编码风格不是编码规范
查看>>
搜索引擎评估与互联网用户行为建设
查看>>
支持取消操作和暂停操作的Backgroundworker
查看>>
程序员职场-三人行,必有我师
查看>>
override与new的区别
查看>>
linux下播放mp3
查看>>
[转载]---通过一个示例,演示利用logminer,恢复delete误删除操作的数据
查看>>
UIPageControl的一个Demo
查看>>
log4cplus配置文件使用
查看>>
java web 学习 --第一天(Java三级考试)
查看>>
SoapUI Pro Project Solution Collection –Easy develop Groovy Script to improve SoapUI ability
查看>>
[Leetcode] Course Schedule
查看>>
[收藏]String formatting in C# :玩转string.format
查看>>
扯扯所学的编程语言
查看>>
数据库设计准则(第一、第二、第三范式说明)
查看>>
[转]SharePoint 2013配置开发环境,需安装VS2012插件
查看>>
TcxDBTreeList导出EXCEL
查看>>
12/22从东京到布里斯班
查看>>