1 malloc--申请动态内存空间
—void *malloc(size_t size)
malloc函数向系统申请匹配size个字节的内存空间。并返回一个指向这块空间的指针
如果函数调用成功,返回一个指针申请的内存空间的指针,由于返回类型是void指针(void *),
所以他可以被转换成任何类型的数据;如果函数调用失败,返回值是NULL。另外,
如果size的参数设置为0,返回值也可能是NULL,但是这不是调用失败。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ptr;
ptr = (int *)malloc(sizeof(int));
if(ptr == NULL)
{
printf("分配内存失败\n");
exit(1);
}
printf("请输入一个整数:");
scanf("%d",ptr);
printf("你输入的整数是:%d\n",*ptr);
return 0;
}
2 free--释放动动态内存空间
—void free(void *ptr);
free函数释放ptr参数指向的内存空间。该内存空间必须是由malloc、callloc或realloc函数
申请的。否则,该函数将导致未定义行为。如果ptr参数是NULL,则不执行任何操作。
注意:该函数并不会修改ptr参数的值,所以调用后,它仍然指向原来的地方。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ptr;
ptr = (int *)malloc(sizeof(int));
if(ptr == NULL)
{
printf("分配内存失败\n");
exit(1);
}
printf("请输入一个整数:");
scanf("%d",ptr);
printf("你输入的整数是:%d\n",*ptr);
free(ptr);
return 0;
}
3 calloc--申请并初始化一系列内存空间
void *calloc(size_t nmenb, size_t size);
calloc函数在内存中动态的申请nmemb个长度为size的连续内存空间
(即申请的总空间尺寸为nmeb *size),这些内存空间全部被初始化为0。
calloc函数在申请完之后,自动初始化该内存空间为0;
malloc函数不进行初始化操作,里面的数据是随机的。
4 realloc--重新分配内存空间
void *realloc(void *ptr, size_t size);
readlloc函数修改ptr指向的内存空间大小为size字节
如果重新分配的内存空间比原来的大,则旧内存块的数据不会发生改变;
如果新的内存空间比原来的小,可能会丢失数据。
memset:使用一个常量字节填充内存空间
memcpy:拷贝内存空间
memmove:拷贝内存空间
mencmp:比较内存空间
memchr:在内存空间中搜索一个字符