使用领域
我们创建数时长度必须事先指定,而且只能是常量,不能是变量。
int a=5;
int arr[a];//这样定义数组时错误的,数组长度必须为常量
//必须为
int arr[5];//这样才是正确的
如果说我们想要创建一个长度为变量的数组,这时就要用到动态内存
int arr[n];//此时就要用到动态内存申请
malloc函数相关介绍
头文件为:
#include<stdlib.h>
函数格式
(void*)malloc(size)
函数详细介绍
其中size为所需开辟空间的大小,单位为字节,例如开辟25个格子的int型数组
25 * sizeof(int)
它的返回值是一个void* 所以它返回值是一个指针,在平时使用过程中我们需要把
void*强制转换为我们所需要的类型,例如
强制转换为int *类型的指针
int*p=(int*)malloc(25*sizeof(int));
强制转换为double*类型的指针
double *q=(double*)malloc(25*sizeof(double));
强制转换为学生结构体指针struct student *p类型的指
struct student*p=(struct student*)malloc(25*sizeof(struct student));
我们此时开辟的空间在堆上,当使用该空间后需要释放指针p,否则会造成内存泄漏。
空间释放
free()函数
free函数为释放malloc函数开辟的空间使用格式为
free(p);//p为指向malloc函数开辟的空间
释放结束后使p置空
p=NULL;
此时使用结束,堆中内存释放。指针置为空。