首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏我是业余自学C/C++的

    memcpy()

    memcpy()是C和C++中使用的内存拷贝函数。 C语言:#include<string.h> C++:#include<cstring> 函数原型: void *memcpy(void *dest, const void *src, size_t

    2.1K50发布于 2018-05-28
  • 来自专栏知识同步

    实现memcpy函数

    好未来二面难点 //如果不考虑地址重叠 void *memcpy(void *dest, const void *src, size_t count){ const char *s=src *temp++=*src++; } return dest; } //如果dest和src有重叠,考虑从高位向低位复制,保证正确复制,不考虑src是否被改变 void *memcpy

    87810编辑于 2022-12-26
  • 来自专栏程序编程之旅

    memcpy函数

    c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 (可以复制其他任意数据类型) strcpy(a,b); 只能将b字符串复制给a字符串 函数原型 void *memcpy(void *dest, const void *src, size_t 的区别: strcpy和memcpy主要有以下3方面的区别。 strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 2、复制的方法不同。 memcpy则是根据其第3个参数决定复制的长度。 3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

    1.5K10发布于 2021-01-20
  • 来自专栏猿人谷

    memcpy的函数

    网新恒天2014校园招聘笔试编程题 已知memcpy的函数为: void* memcpy(void *dest , const void* src , size_t count)其中dest是目的指针, 不调用c++/c的memcpy库函数,请编写memcpy。 功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 2.strcpy和memcpy主要有以下3方面的区别。 2.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 2.2、复制的方法不同。 memcpy则是根据其第3个参数决定复制的长度。 2.3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。 3.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。

    1.8K80发布于 2018-01-17
  • 来自专栏叶子的开发者社区

    模拟memcpy和memmove

    memcpy是内存复制函数,原型如下 void *memmove(void *dest, const void *src, size_t count) 从src地址复制count个字节到dest 模拟实现 void *memcpy(void *dest, const void *src, size_t count) { if (dest == NULL || src == NULL) *) dest + i) = *((char *) src + i); } return ans; } 无法处理重叠问题,如123456789自移动12345成为123412345,用memcpy char *) src + count); } return ans; }  测试 int main() { char cpy[] = "123456789"; memcpy

    27510编辑于 2024-04-10
  • 来自专栏c语言

    模拟实现memcpy,memmove,memset,memcmp

    memcpy void * memcpy ( void * destination, const void * source, size_t num ); 使用注意事项: 从source的位置向后复制num void* memcpy(void* dst, const void* src, size_t count) { void* ret = dst;//用一个指针指向dst assert(dst); /将src的一个字节赋值给dst dst = (char*)dst + 1; src = (char*)src + 1; } return(ret); } memmove memmove和memcpy

    43110编辑于 2024-05-08
  • 来自专栏饶文津的专栏

    sprintf、strcpy和memcpy的区别

    做某题用到了sprintf把一个字符数组(字符串)写到二维字符数组里,然后耗时挺长的,想了想strcpy好像也可以,事实证明strcpy效率果然更高,然后想了想觉得memcpy好像也可以。 实践了一下的确可以,效率不用说也比sprintf高,毕竟memcpy是对内存操作。然后我就百度了一下它们的区别,做个总结(记笔记)。 sprintf 可以用%s来实现格式化写入,其他两个做不到。 memcpy 根据size大小来复制,可以复制各种数据类型(结构体、数组)。 对于拷贝字符串,我们选择strcpy,因为memcpy还需要提供size参数,且strcpy另一个优势是返回值是char *,也就是目标字符串的首地址,这样可以写链式表达式: strlen(strcpy ='\0'); //把src字符串的内容复制到dest下   return dest; } memcpy的实现 void *memcpy(void *memTo, const void *memFrom

    2.1K10发布于 2020-06-02
  • 来自专栏cpp加油站

    手写strcpy和memcpy代码实现

    本篇文章聊一下strcpy和memcpy的代码实现,这两个也是c和c++面试中常考的问题点。 1. 2. memcpy的实现 memcpy的实现其实可以参考strncpy的实现,比如我们把指针类型转换成char*来实现拷贝,这种方式就是按照一个字节一个字节来进行拷贝了,首先还是一睹代码为快,如下: # #include <string.h> struct people { int iAge; char szName[12]; char szSex[3]; }; //模拟memcpy stPeople2.szName, stPeople2.szSex); return 0; } 我们看mymemcpy的实现,此时是一个字节的实现,但它与strncpy实现不能一样,看一下memcpy 好了,关于strcpy和memcpy的实现就介绍到这里,如果我的创作对你有用的话,麻烦点个赞呗。

    1.5K20发布于 2021-06-07
  • 内存内容操作函数详解:memcpy()

    无论是在系统编程、应用开发还是嵌入式领域,memcpy () 都扮演着不可或缺的角色。 一、函数简介 memcpy () 函数的核心功能是实现内存块之间的复制。 这一特性使得 memcpy () 具有广泛的适用性,不仅可以用于复制字符串,还能用于复制数组、结构体等各种数据类型。在数据传输、缓存操作、对象复制等场景中,memcpy () 都能发挥重要作用。 二、函数原型 memcpy () 函数的原型定义在 < string.h> 头文件中,具体如下: void *memcpy(void *dest, const void *src, size_t n); 内存重叠问题​ memcpy () 函数不处理源内存区域和目标内存区域重叠的情况。如果 src 和 dest 所指向的内存区域有重叠,使用 memcpy () 可能会导致复制结果出错。 在使用 memcpy () 之前,应该对指针的有效性进行检查。

    18310编辑于 2026-01-20
  • 来自专栏cloudskyme

    memset,memcpy,strcpy 的区别

    返回指向dest的指针 memcpy extern void *memcpy(void *dest,void *src,unsigned int count); #include <string.h> 用来对一段内存空间全部设置为某个字符,一般用于在对定义的字符串初始化为' '或者'\0';     例: char a[100];           memset(a,'\0',sizeof(a));    memcpy 是用来做内存拷贝,可以用来拷贝任何数据类型的对象,可以指定拷贝的数据长度;    例:            char a[100],b[50];            memcpy(b,a,sizeof (b));   //注意:如果使用sizeof(a),会造成内存溢出    mem是一段内存,他的长度,必须自己记住.memcpy是见着什么拷贝什么。     是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符) memcpy的原型为 void *memcpy(void *dest, const void *src, size_t

    3.8K120发布于 2018-03-20
  • 来自专栏猿人谷

    memcpy和memmove的区别

    memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下: void *memcpy(void *dst, const void *src, size_t memcpy()是从src的起始部分开始复制,所以虽然第一种情况下没有问题,但如果遇到第二种情况,则会发生错误,如图所示,后两个字节在被复制前已经被覆盖掉了。 VS.NET2003中所附源码如下(有删): void * __cdecl memcpy (void * dst, const void * src, size_t count){        void

    2.3K50发布于 2018-01-17
  • 来自专栏ml

    strcpy和memcpy的区别

    strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 已知strcpy函数的原型是:char* strcpy(char* dest, const char* src); memcpy提供了一般内存的复制。 即memcpy对于需要复制的内容没有限制,因此用途更广。 void *memcpy( void *dest, const void *src, size_t count ); ? ='\0'); //把src字符串的内容复制到dest下   return strdest; } void *memcpy(void *memTo, const void *memFrom, size_t memcpy则是根据其第3个参数决定复制的长度。 3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

    1.6K61发布于 2018-03-21
  • 来自专栏全栈程序员必看

    strcpy和memcpy的差别

    strcpy和memcpy都是标准C库函数。它们有以下的特点。 strcpy提供了字符串的复制。 即strcpy仅仅用于字符串复制。 memcpy提供了一般内存的复制。即memcpy对于须要复制的内容没有限制,因此用途更广。 void *memcpy( void *dest, const void *src, size_t count ); char * strcpy ( char * dest, const char strcpy仅仅能复制字符串,而memcpy能够复制随意内容,比如字符数组、整型、结构体、类等。 2、复制的方法不同。 memcpy则是依据其第3个參数决定复制的长度。 3、用途不同。通常在复制字符串时用strcpy。

    1.1K20编辑于 2022-07-11
  • 来自专栏萌新的日常

    内存函数 memcpy,memmove ,memcmp

    一、memcpy函数 1.用法 memcpy表示内存函数,用法跟strcpy差不多, 都是作为拷贝函数存在 strcpy只能用于字符串函数,而memcpy函数可以使用任意类型 在使用任意类型时,肯定用到的参数是 void void* memcpy(const void *dest,const void *src, size_t sum); 这里的sum作为字节数传递 #include<stdio.h> # include<string.h> int main() { int arr[10]={0}; int arr2[10]={1,2,3,4,5,6,7,8,9,10}; memcpy(arr1,arr2,20 );//1 2 3 4 5 /20作为字节数 即传递4个整形 return 0; } 2.模拟实现memcpy函数 #include<stdio.h> #incldue<assert.h> void 1,2,3,4,5,6,7,8,9,10}; mymemcpy(arr1,arr2,20);//传递4个整形 return 0; } 二、memmove函数 1.用法 memmove函数是用于处理内存重叠的情况 参数同memcpy

    1K10编辑于 2022-11-10
  • 来自专栏ljw

    memcpy的使⽤和模拟实现

    一:memcpy的使⽤ 这是memcpy在库里的定义,具体可在cplusplus.com查看 void * memcpy ( void * destination, const void * source 和strcpy的区别 C语言中memcpy和strcpy是两个常用的字符串和内存操作函数,但它们在用途和行为上有明显的区别。 memcpy和strcpy都可以用在字符串,memcpy和strncpy在字符串中的使用几乎完全等价。 用途: memcpy:是一个通用的内存复制函数,它用于从源地址(source)开始拷贝n个字节到目标地址(destination)。 安全性: memcpy:不检查目标内存区域是否足够大以容纳源内存区域的内容。

    61810编辑于 2024-10-18
  • 来自专栏分布式系统进阶

    汇编实现的memcpy和memset

    通过这篇文章,您可以了解过: CPU寄存器的一些知识; 函数调用的过程; 汇编的一些知识; glibc 中 memcpy和memset的使用; 汇编中memcpy和memset是如何实现的; 闲话不多说 ,今天来看看汇编中如何实现memcpy和memset(脑子里快回忆下你最后一次接触汇编是什么时候......) glibc中的memcpy 我们先来看下glibc中的memcpy , 原型如下: void *memcpy(void *dest, const void *src, size_t n); 从src拷贝连续的 汇编实现的memcpy 说来惭愧,汇编代码作者本人也不会写。不过我们可以参考linux源码里面的实现,这相对还是比较权威的吧。 .code16, 所有这里都只用到这两个寄存器的低16位:%si和%di; 代码的第一,二句保存当前的%si和%di到栈中; 这段代码实际上是fastcall调用方式,void *memcpy(void

    3K20发布于 2019-12-19
  • 来自专栏走在努力路上的自己

    内存函数​(memcpy、memmove、memset、memcmp)

    一、memcpy的使用和实现 memcpy 拷贝的就是不重叠的内存。 * source, size_t num ); // memcpy 可以拷贝任何类型的数据,因此使用 void* 作为参数类型 void* memcpy(void* destination, const void* source, size_t num) • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 int arr2[10] = { 0 }; // 使用自定义的my_memcpy函数,将arr1中的部分数据拷贝到arr2中。 //将arr1中的1 2 3 4 5 拷贝到arr2中 my_memcpy(arr2, arr1+3, 5 * sizeof(int)); } void* my_memcpy(void

    2.8K10编辑于 2024-01-26
  • 来自专栏王硕

    原 memmove 和 memcpy的区别

    memcpy 和 memmove 都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const void memmove(void *dst, const void *src, size_t count);  他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy 实际上,memcpy只是memmove的一个子集。 (p2, p1, 5)与memmove(p2, p1, 5)的结果就可能是不同的,memmove()可以将p1的头5个字符"12345"正确拷贝至p2,而memcpy()的结果就不一定正确了 关于memmove 确实发生了错误,由于是发生了重叠,其次memcpy又是对于部分数据以其他形式进行赋值,所以在一定情况下,结果就不一定正确了。

    1.4K30发布于 2018-07-06
  • 【安全函数】memcpy_s ():C 语言内存复制的安全升级与 memcpy 深度对比

    memcpy () 相比,memcpy_s () 并非简单的功能增强,而是从根本上重构了内存复制的安全模型。 ,替代 memcpy () 的未定义行为 边界严格控制:引入源和目标内存的最大尺寸参数,彻底杜绝缓冲区溢出 1.2 与 memcpy () 的本质差异 核心特性 memcpy() memcpy_s() return 0; // 成功 } 与 memcpy () 实现的关键差异 memcpy () 的典型实现如下,对比可见两者的本质区别: void *memcpy(void *restrict 四、使用场景 memcpy_s () 与 memcpy () 的使用场景有交集,但在安全敏感场景中,memcpy_s () 是更优选择。通过具体场景对比,可清晰展现两者的适用边界。 1. 六、示例代码:memcpy_s () 实战应用 以下通过完整示例展示 memcpy_s () 在实际开发中的应用,对比 memcpy () 的实现,凸显安全特性。

    32310编辑于 2026-01-21
  • 来自专栏ypw

    数组赋值函数memcpy()的用法

    但如果你想从a复制k个元素到b,你可以这样写memcpy(b,a,sizeof(int)*k) 此函数头文件是string.h 此函数第一个元素是你想要复制到的数组,第二个是你复制的来源数组,其后数组类型根据具体情况变化 把a全部复制到b是memcpy(b,a,sizeof(a))。

    2.3K20编辑于 2022-05-05
领券