实现动态分配内存

偶尔善良 提交于 2020-03-01 08:42:54

9-2-7  实现动态分配内存  

有些时候我们需要在内存主动申请内存来保存我们的数据,实现动态分配内存的效果,头文件 #Include <stdlib.h> 声明了个关于内存动态分配的函数 。

  1. 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 运行结果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!