C语言malloc函数详解(通俗易懂)

简单来说,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就会反复的开辟空间,直到空间被占满,然后就会报错中断程序。

所以养成free和malloc配套使用的习惯还是比较关键的

  • 107
    点赞
  • 485
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值