9-2-7 实现动态分配内存
有些时候我们需要在内存主动申请内存来保存我们的数据,实现动态分配内存的效果,头文件 #Include <stdlib.h> 声明了个关于内存动态分配的函数 。
- malloc( )函数
函数原型 void * malloc(usigned int size)
• 作用——在内存的动态存储区(堆区)中分配一个长度为size的连续空间。
• 形参size的类型为无符号整型,函数返回值是所分配区域的第一个字节的地址,
即此函数是一个指针型函数,返回的指针指向该分配域的开头位置。
• malloc(100); 开辟100字节的临时空间,返回值为其第一个字节的地址
2.free( )函数
函数原型:void free(void *p)
• 作用——释放变量p所指向的动态空间,使这部分空间能重新被其他变量使用。
• p是最近一次调用calloc或malloc函数时的函数返回值
• free函数无返回值
• free(p); // 释放p 所指向的已分配的动态空间
为了更深入的理解malloc()函数和free()函数,我们来讲一个动态内存分配案例:
动态创建数组,输入5个学生的成 绩,另外一个函数检测成绩低于60 分的,输出不合格的成绩。
实例 9-10
#include <stdlib.h>
#include <stdio.h>
int main() {
void check(int *);
int * p,i;
p = (int *)malloc(5*sizeof(int));
for ( i = 0; i < 5; i++) {
scanf("%d", p + i);
}
check(p);
free(p);
getchar();
return 0;
}
void check(int *p) {
int i;
printf("\n不及格的成绩 有: ");
for (i =0; i < 5; i++) {
if(p[i] < 60) {
printf(" %d ", p[i]);
}
}
}
运行结果 如图9-8所示
9-8 实例9-10 运行结果
来源:CSDN
作者:行知天下
链接:https://blog.csdn.net/qq_27248989/article/details/104575261