(转载)memcpy的几个实现版本
实现void *memcpy(void *to, const void *from, size_t count)这个函数。首先对这个函数做一些说明。
#include <string.h>
void *memcpy(void *to, const void *from, size_t count)
函数memcpy()从from指向的数组向to指向的数组复制count个字符。如果两数组重叠,不定义函数的行为。
在C99中,to和from由restrict修饰。
先来看看微软的实现:
void * __cdecl memcpy (
void * dst,
const void * src,
size_t count
)
{
void * ret = dst;
#if defined (_M_IA64)
{
extern void RtlMoveMemory( void *, const void *, size_t count );
RtlMoveMemory( dst, src, count );
}
#else
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst 1;
src = (char *)src 1;
}
#endif
return(ret);
}
再来看看coreutils中的实现:
void *
memcpy (void *destaddr, void const *srcaddr, size_t len)
{
char *dest = destaddr;
char const *src = srcaddr;
while (len-- > 0)
*dest++ = *src++ ;
return destaddr;
}
再来看Linux中实现:
void *memcpy(void *dest, const void *src, size_t count)
{
char *tmp = dest;
const char *s = src;
while (count--)
*tmp++ = *s++ ;
return dest;
}
(转载)memcpy的几个实现版本的更多相关文章
- 转载 :c# 获取net framework 版本(Environment 类)
源链接:http://www.cnblogs.com/tobecrazy/p/3362446.html 根据自己使用情况,添加了部分备注 1.获取当前操作系统版本信息 使用Environment.OS ...
- 转载的log4cplus使用指南
以下转载的log4cplus使用指南的版本可能不是最新,仅作参考了解.应以最新安装包中的示例代码为准. 目 录1 Log4cplus简介 52 安装方法 53 主要类说明 64 ...
- Android 6.0 - 动态权限管理的解决方案
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...
- Redis GetTypedClient
C#操作Redis 未包含GetTypedClient定义 原创,转载请注明出处. VS版本:2015 用NuGet安装了Redis的包 按照百度的各种教程来操作,但是发现网上下载的DEMO可以正 ...
- 做一个App前需要考虑的几件事
本文转载于文章原文链接,版本归原作者所有! 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 App 有了一定规模后, ...
- VS2010中打开VS2013/VS2012项目
VS2010中打开VS2013/VS2012项目 (2014-04-03 23:47:53) 转载▼ 分类: IT VS低版本打开高版本创建的项目时会提示"选择的文件是解决方案文件,但是 ...
- 工作案件1 一切都是有check引起的
HTML中input标签有两个类型,radio和checkbox,一个单选按钮一个复选按钮.jquery可以通过$(":radio")和$(":checkbox" ...
- fastclick插件 导致 input[type="date"] 无法触发问题解决方案
鄙人才疏学浅,新人一枚,不足之处还请谅解,写下这个也只是为了给大家分享一下我解决这个BUG的方法,也是自己的一个笔记. 首先,我们使用fastclick插件的初衷是解决“tap”事件“点透”的BUG: ...
- Odoo11入门请假单模块学习教程源码
欢迎转载,但必须明显标注转载地址. 系统:Windows10 版本:Odoo11 一.创建模块 1.创建一个模块的骨架结构目录(在windows 的 CMD中) E:\Odoo 11.0> py ...
随机推荐
- PHP webserver 之 soap non-wsdl
non-wsdl 顾名思义就是不使用wsdl文件进行的webserver服务 事实上个人觉得用wsdl模式还不如使用non-wsdl模式,wsdl模式稍加麻烦! 1.网站运行环境下开启soap模块(p ...
- iOS 基础 第一天(0804)
OC对象的本质就是一个结构体 为什么说是个结构体? 例如:类里面声明了几个成员变量\实例变量(已添加@plublic),外部对象的指针在访问这个变量的时候是这么写的p->a 0804 注意oc的 ...
- 经管资源库项目总结----在线预览office文件的实现与总结
依旧是这个经管的项目.在线预览作为资源和文档管理系统的一个很酷的并且是如此重要的功能,是必须要实现的.然后百度一下office在线预览,看起来so eazy啊,各种博客各种demo,一下子就做出效果来 ...
- wget 下载百度云jdk
oracle官网下载需要登录下载 所以从百度云下载 wget -c -O "URL"
- 2329: [HNOI2011]括号修复 - BZOJ
恶心的splay,打标记的时候还有冲突,要特别小心 上次写完了,查了半天没查出错来,于是放弃 今天对着标程打代码,终于抄完了,我已经不想再写了 const maxn=; type node=recor ...
- BZOJ 1741: [Usaco2005 nov]Asteroids 穿越小行星群
Description 贝茜想驾驶她的飞船穿过危险的小行星群.小行星群是一个NxN的网格(1≤N≤500),在网格内有K个小行星(1≤K≤10000). 幸运地是贝茜有一个很强大的武器,一次可以消除所 ...
- 什么是 .manifest 文件
恩,为了大家都能很方便的理解,我将尽量简单通俗地进行描述. [现象]对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把 ...
- hdu 2147 kiki's game 博弈论
找规律的博弈论!! 很容易发现当n,m都为奇数时先手必败! 代码如下: #include<iostream> #include<stdio.h> #define I(x,y) ...
- android 图片画画板
canvas.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- ssh远程执行命令并自动退出(已测试通过)
转自:http://blog.csdn.net/fdipzone/article/details/23000201 ssh命令格式如下: usage: ssh [-1246AaCfgKkMNnqsTt ...