memset memcpy 使用场景分析

本文深入解析了C/C++中memset和memcpy两个核心内存操作函数。详细介绍了memset如何用于内存初始化,尤其是在新分配内存的初始化中,以及memcpy如何实现内存内容的高效复制。文章还强调了在C++中使用这两个函数时的注意事项。

memset定义:

memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值,count:是buffer的长度.

memset在IR中使用场景注意点:

  1. c++中 memset的初始值只能为int类型
  2. memset可以给数组、结构体(本质是传递指针过去,对指向的内存空间设置为指定值。)即使是double也会自动转换为int类型。

memcpy定义:

memcpy指的是C和C++使用的内存拷贝函数,函数原型为void *memcpy(void *destin, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。

参数

  • destin-- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
  • source-- 指向要复制的数据源,类型强制转换为 void* 指针。
  • n-- 要被复制的字节数。

返回值

该函数返回一个指向目标存储区destin的指针。

功能

从源source所指的内存地址的起始位置开始拷贝n个字节到目标destin所指的内存地址的起始位置中。

特点

  • memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
  • memcpy则是根据其第3个参数决定复制的长度。
  • memcpy将覆盖原有数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值