• 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;
    }

    更多嵌入式linux及编程学习交流的文章,请访问我的个人网站”恩享网” :http://www.enxiang.icoc.cc,期待与您共同进步。

  • 相关阅读:
    go http的三种实现---2
    go http的三种实现---1
    go语言递归创建目录
    Golang中的正则表达式
    go语言strings包
    go语言获取字符串元素的个数
    VBA在Excel中的应用(三)
    ASP 转换HTML特殊字符
    ASP汉字转拼音函数的方法
    用ASP实现文件下载
  • 原文地址:https://www.cnblogs.com/LJTbozai/p/3029262.html
Copyright © 2020-2023  润新知