1 / 5
文档名称:

动态内存分配.pptx

格式:pptx   大小:166KB   页数:5页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

动态内存分配.pptx

上传人:wz_198613 2019/3/22 文件大小:166 KB

下载得到文件列表

动态内存分配.pptx

文档介绍

文档介绍:2、动态内存分配所谓动态内存分配是指在程序运行过程中,根据程序的实际需要来分配一块大小合适的连续的内存单元。程序可以动态分配一个数组,也可以动态分配其它类型的数据单元。动态分配的内存需要有一个指针变量记录内存的起始地址。C语言中动态内存分配其实就是使用一个标准的库函数malloc,其函数的原型为:void*malloc(unsignedintsize);说明:size这个参数的含义是分配的内存的大小(以字节为单位)。返回值:失败,则返回值是NULL(空指针)。成功,则返回值是一个指向空类型(void)的指针(即所分配内存块的首地址)。语言程序设计静态内存分配和动态内存分配Csizeof运算符sizeof运算符功能:获取变量和数据类型所占内存大小(字节数)格式:sizeof表达式sizeof(数据类型名或表达式)例:sizeof(int)其值为2()其值为4()sizeof(long)其值是4sizeof(10L)其值也是4unsignedlonga=2;sizeof(a)其值也是4语言程序设计静态内存分配和动态内存分配C2、动态内存分配intn,*pscore;scanf("%d",&n);//分配n个连续的整型单元,首地址赋给pscorepscore=(int*)malloc(n*sizeof(int));//分配内存失败,则给出错误信息后退出if(pscore==NULL){printf("Insufficientmemoryavailable!");exit(0);}……//可对pscore所指向的单元进行其它处理例如:根据学生人数来建立数组的问题可以用动态内存分配来解决,其方法如下:动态分配的内存块0100pscore0100语言程序设计静态内存分配和动态内存分配C关于malloc的使用有几点需强调一下:malloc前面必须要加上一个指针类型转换符,如前面的(int*)。因为malloc的返回值是空类型的指针,一般应与右边的指针变量类型一致。malloc所带的一个参数是指需分配的内存单元字节数,尽管可以直接用数字来表示,但一般写成如下形式:分配数量*sizeof(内存单元类型符)malloc可能返回NULL,表示分配内存失败,因此一定要检查分配的内存指针是否为空,如果是空指针,则不能引用这个指针,否则会造成系统崩溃。所以在动态内存分配的语句的后面一般紧跟一条if语句以判断分配是否成功。3、动态内存释放计算机中最宝贵的资源就是内存。因此需要动态分配内存的程序一定要坚持“好借好还,再借不难”的原则。释放动态内存的函数free其原型为:voidfree(void*block);例:free(pscore);注意:(在TC、BC下)。malloc和free一般成对出现!语言程序设计静态内存分配和动态内存分配C【例】编写程序先输入学生人数,然后输入学生成绩,最后输出学生的平均成绩、最高成绩和最低成绩。#include<>#include<>#include<>voidmain(){intnum,i;intmaxscore,minscore,sumscore;int*psco