malloc函数的作用是开辟一块地址空间来使用,它包含在标准库:
#include<stdlib.h>
malloch返回值为void*,即空类型指针,一般我们都要对结果进行类型转换,如:
(int*) malloc(sizeof(int)*num)
通过malloc申请的空间是以字节为单位的,如malloc(1*1024*1024)则申请了1MB的空间;
如果申请失败了,如空间已满,则会返回0;
下面用一个简单的实例说明malloc函数的用法:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num;
int *a;
scanf("%d",&num);
a=(int*)malloc(sizeof(int)*num);
free(a);
}
因为我们的a的类型是int*,而malloc返回的是void*,所以我们要通过(int*)来对malloc进行类型转换来得到我们需要的空间;
与malloc相对应的函数是free()
void free(void *ptr)
free的作用是将用malloc函数开辟的空间释放,一般来说free函数是必须的,只要你用了malloc,就要free;
传入free的指针只能是使用malloc对应的那个指针,如果传入其他指针,是一定会报错的(空指针不会报错,因为free本质也是一个函数,它内部有一个检测程序);
但是我们平常写的小程序,我们不去free是没有影响的,因为程序在运行完后自动就将所有的空间全部释放了,但当我们在搞一个比较大的项目的时候,比如一个一直工作的服务器,这时候我们不去free,就会有很大的影响,程序一直运行,那malloc就会反复的开辟空间,直到空间被占满,然后就会报错中断程序。
所以养成free和malloc配套使用的习惯还是比较关键的