常用的内存管理函数有以下这四位↓
malloc、callco、relloc、free
想要这四位的帮助都需要都需要引入一个头文件stdlib.h
目录
函数原型
来看看他们的函数原型
malloc函数原型
void* malloc (size_t size);
这个void并不是无返回类型!看看他后面的小星星,这是无类型指针,所以他是有一个无类型指针的返回值,括号里的参数为无符号整形。
callco函数原型
void* calloc (size_t num, size_t size);
他的返回类型同样为无类型指针,他的括号里的参数为两个无符号整形。
realloc函数原型
void* realloc (void* ptr, size_t size);
他的返回类型同样为无类型指针,他的括号里有两个参数一个无类型指针和一个无符号整形
上面三个函数都是按照字节数来开辟空间的
free函数原型
不过free函数不是用来开辟空间的
void free (void* ptr);
这次就是无返回值啦,括号里的参数只有一个无类型指针。
用法演示
下面来演示下他们的用法
malloc使用方法
#include<stdio.h>
#include<stdlib.h>
int main()
{
//在堆空间中开辟空间
//使p指向这段开辟的空间
int* p = (int*)malloc(10 * sizeof(int)); //开辟十个int类型的大小
//返回值不强制转换的话有些编译器可能会报警告
int i;
for (i = 0; i < 10; i++)
{
printf("%d ", *(p+i) = i);
}
//空间回收
free(p); //这里只是把这段内存还给了操作系统p没有置为空指针,p还是指着这个空间
p = NULL; //需要手动置为空指针,免得后面误操作
return 0;
}
看看打印结果
callco使用方法