c语言常用内存处理函数

memset()

#include<string.h>
void*memset(void*s,int c,size_t n);

功能:

将s的内存区域的前n个字节以参数c填入(用来初始化)

参数:

s:需要操作内存s的首地址

c:填充的字符,c虽然参数为int,但必须是unsigned char,范围为0-255

n:指定需要设置的大小

返回值:

s的首地址

memcpy()

#include<string.h>

void *memcpy(void *dest,const void *src,size_t n)

功能:

拷贝src所指的内存内容的前n个字节到dest所指的内存地址上

参数:

dest :目的内存首地址

src:源内存首地址

n:需要拷贝的字节数
注意:dest所指内存和src所指内存地址不可以重叠

例:

int arr[]={1,2,3,4,5,6,7,8,9};
int*p=arr;
p++;
memcpy(p,arr,36);//错误
此时p所指地址和arr所指地址有重叠

返回值:

dest的首地址

与strcpy()区别

  1. 函数参数不同
  2. strcpy()拷贝字符串memcpy()可以拷贝一块内存
  3. 拷贝结束标志不同,strcpy()以\0结尾,memcpy()以个数为结尾

mommove()

#include<string.h>

void *memcpy(void *dest,const void *src,size_t n)

功能:

拷贝src所指的内存内容的前n个字节到dest所指的内存地址上
拷贝重叠内存地址不会出现问题,但是效率比较低,如果拷贝源与拷贝没有重叠,效率与memcpy一样

memcmp()

#include<string.h>
int memcmp(const void*s1,const void*s2,size_t n);

功能:

比较s1和s2所指向内存区域的前n个字节大小

参数:

s1:内存首地址1

s2:内存首地址2

n:需比较的前n个字节

返回值:

相等:=0

大于:>0

小于:<0

free(堆空间释放)

#include<stdlib.h>
void free(void* ptr);

功能:

释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,指向被释放区域的首地址,对同一内存空间多次释放会出错

参数:

ptr:需要释放空间的首地址,被释放区应是由malloc函数所分配的区域

返回值:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值