学科分类
目录
C语言

其他内存操作函数

除了内存申请与释放,C语言还提供了其他内存操作函数,如内存初始化函数memset(),内存复制函数memcpy()、memmove()等,下面对这三个函数分别进行介绍。

(1)memset()函数

memset()函数原型如下:

void *memset(void *s, int c, size_t n);

memset()函数返回值类型为void *,第1个参数s指向填充的内存空间,第2个参数c指的是填充申请的内存空间所使用的常量,第3个参数n指的是填充空间的字节数。memset()函数的功能是填充连续的内存空间。

由于malloc()函数申请内存后未对内存初始化,内存中存储元素的值是没有用的数据或随机值,为了规范操作,通常使用memset()函数初始化malloc()函数申请的堆内存空间。此外,memset()函数也可用于字符数组的初始化。

(2)memcpy()函数

memcpy()函数原型如下:

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

memcpy()函数返回值类型为void *,第1个参数dest指向存放拷贝后数据的地址空间,第2个参数src指向需要拷贝数据,第3个参数n表示要拷贝的字节数。该函数表示将n字节数据从内存区域src拷贝到内存区域dest,函数返回指向拷贝后空间的指针。需要注意的是,dest与src指向的内存区域不能重叠。

(3)memmove()函数

memmove()函数原型如下:

void *memmove(void *dest, const void *src, size_t n);

memmove()函数为void 类型,第1个参数dest指向存放拷贝后数据的地址空间,第2个参数src指向需要拷贝数据的地址空间,第3个参数n表示要拷贝的字节数。memmove()函数表示将n字节数据从内存区域src拷贝到内存区域dest,函数返回指向拷贝后空间的指针。

memmove()函数可以处理空间重叠的情况,如果dest和src指向的内存空间发生重叠,memmove()函数能够将src空间的数据在被覆盖之前拷贝到des目标区域。拷贝完成之后,src内存区域的数据会被更改。如果dest和src指向的内存空间不重叠,则memmove()函数与memcpy()函数功能一样。*

点击此处
隐藏目录