c语言常用内存处理函数

memset()

#include
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

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

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

功能:

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

memcmp()

#include
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
void free(void* ptr);

功能:

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

参数:

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

返回值:

你可能感兴趣的:(c\c++)