首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言中常见的内存函数

C语言中常见的内存函数

作者头像
HZzzzzLu
发布2024-11-26 08:13:53
发布2024-11-26 08:13:53
2130
举报
文章被收录于专栏:codingcoding

一.memcpy(内存拷贝)

我们可以从下面的链接查到关于memcpy函数的具体介绍

icon-default.png?t=N7T8
icon-default.png?t=N7T8

https://legacy.cplusplus.com/reference/cstring/memcpy/?kw=memcpy

memcpy这个函数作用:

从source指向的位置开始复制num个字节的数据到destination指向的内存中。

有一点需要注意,这个函数遇到'\0'是不会停止复制的,你让复制多少个字节,他就复制多少个字节。

下面是这个函数使用的一个例子:


memcpy的模拟:

我们可以参照cplusplus官方memcpy函数的格式进行模拟。

如下:

这个函数的模拟并不难,不过多讲解。


二.memmove(内存移动)

当我们了解了memcpy函数后,我们来思考下这个问题?

如果dest与src有重叠,我们模拟的memcpy函数还能起作用吗? 答案是不能。

事实上,当destination和source发生重叠时,使用memcpy函数拷贝的结果是未定义的。

此时我们就会使用系统自带的memmove函数,这个函数是专门解决空间重叠的情况。

(在vs2022中,memcpy是可以实现重叠拷贝的,但不能保证所有的memcpy都可以。)


下面介绍memmove函数:

memmove函数介绍

icon-default.png?t=N7T8
icon-default.png?t=N7T8

https://legacy.cplusplus.com/reference/cstring/memmove/?kw=memmove这个函数的作用跟memcpy函数相似,只不过是专门解决重叠拷贝的情况。

使用例子:


memmove函数的模拟:

dest <= src时,我们采取顺序打印(以src的视角)不然重叠的部分会被覆盖。

dest > src时,我们采取逆序打印。


三.memcmp(内存比较)

memcmp函数介绍

icon-default.png?t=N7T8
icon-default.png?t=N7T8

https://legacy.cplusplus.com/reference/cstring/memcmp/?kw=memcmp注意,这里要比较的字节数是最多比较字节数。当前几次的比较已经出现结果,函数就不会继续比较下去了。

使用例子:


memcmp的模拟:


四.memset(内存设置)

这个函数是用来设置内存的的,以字节为单位。

从ptr指向的内存块的前num个字节设置为指定值。

使用例子:


memset的模拟:


写完了,拜拜,下期再见😏

摸鱼摸鱼😴✨🎞

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.memcpy(内存拷贝)
  • 二.memmove(内存移动)
  • 三.memcmp(内存比较)
  • 四.memset(内存设置)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档