简单来说,malloc函数的作用是开辟一个空间来给你使用;
他包含在标准库中
#include<stdlib.h>
返回值是一个void*(可以简单理解为一个没人知道它是什么类型的指针),一般我们都要对结果进行类型转换;
void* malloc(size_t size)
我们通过malloc申请的空间是以字节为单位的,如malloc(1*1024*1024)则申请了1MB的空间;
如果申请失败了,如空间已满,则会返回0;
我们用一个简单的实例就能掌握malloc函数的用法
#include<stdio.h>
#include<stdlib.h>
main()
{
int ry_01;
int *a;
scanf("%d",&ry_01);
//相当于 int a[ry_01];
a=(int*)malloc(ry_01*sizeof(int));
free(a);
}
因为我们的a的类型是int*,而malloc返回的是void*,所以我们要通过(int*)来对malloc进行类型转换来得到我们需要的空间,可以是int也可以是double;
与malloc相对应的函数是free()
void free(void *ptr)
free的作用是将你用malloc函数开辟的空间释放,一般来说free函数是必须的,只要你用了malloc,就要free;
传入free的指针只能是你用malloc对应的那个指针,如果传入其他指针,是一定会报错的(0指针不会报错,因为free本质也是一个函数,它内部有一个检测程序);
但是我们平常写的小程序,我们不去free是没有影响的,因为程序在运行完后自动就将所有的空间全部释放了,但当我们在搞一个比较大的项目的时候,比如一个一直工作的服务器,这时候我们不去free,就会有很大的影响,程序一直运行,那malloc就会反复的开辟空间,直到空间被占满,然后就会报错中断程序。文章来源:https://www.toymoban.com/news/detail-401157.html
所以养成free和malloc配套使用的习惯还是比较关键的文章来源地址https://www.toymoban.com/news/detail-401157.html
到了这里,关于C语言malloc函数详解(通俗易懂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!