C语言第15章.ppt

上传人:laozhun 文档编号:4515309 上传时间:2023-04-25 格式:PPT 页数:13 大小:1.85MB
返回 下载 相关 举报
C语言第15章.ppt_第1页
第1页 / 共13页
C语言第15章.ppt_第2页
第2页 / 共13页
C语言第15章.ppt_第3页
第3页 / 共13页
C语言第15章.ppt_第4页
第4页 / 共13页
C语言第15章.ppt_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《C语言第15章.ppt》由会员分享,可在线阅读,更多相关《C语言第15章.ppt(13页珍藏版)》请在三一办公上搜索。

1、第十五章 内存管理,第十五章 内存管理,15.1 内存组织形式15.2 内存管理15.3 内存丢失15.4 实战练习,本章学习内容,15.1 内存组织形式,程序运行前,需要先被装载到内存中,内存组织形式分为4个逻辑段1.可执行代码2.静态数据:可执行代码和静态数据存储在内存的固定位置3.动态数据:程序请求中动态分配的内存,也就是堆4.栈:局部数据对象,函数参数以及调用函数和被调用函数的联系,15.1 内存组织形式,在内存存储空间中,用于程序动态分配和释放的内存块称为自由存储空间,通常称为堆堆允许程序在运行时动态的申请内存空间malloc()函数从堆中分配内存free()函数将内存释放到堆,15

2、.1 内存组织形式,栈从数据结构角度来说,是一个后进先出的压入弹出式数据结构,包括栈顶指针和栈底指针系统中的栈空间是系统用来自动处理的内存空间,程序中的局部对象、函数参数以及调用函数和被调用函数的联系,都存放在栈中,15.2 内存管理函数,15.2.1 malloc()函数功能:在内存中动态的分配一块内存空间形式:void*malloc(unsigned int size);/*size是分配内存块大小(字节)*/例如:int*p;p=(int*)malloc(sizeof(int);,15.2 内存管理函数,15.2.2 calloc()函数功能:在内存中分配n个长度为size字节的连续的内

3、存空间形式:void*calloc(unsigned int n,unsigned int size);例如:int*arr;arr=(int*)calloc(5,sizeof(int);,15.2 内存管理函数,15.2.3 realloc()函数功能:更改已经配置的内存空间,使指针重新指向一个内存空间形式:void*realloc(void*ptr,size_t size);例如:double*p=(double*)malloc(sizeof(double);int*q=realloc(p,sizeof(int);,15.2 内存管理函数,15.2.4 free()函数功能:释放内存空间形

4、式:void free(void*ptr);例如:free(p);,15.3 内存丢失,使用malloc()函数、calloc()函数等动态分配内存空间后,需要使用free()函数释放内存空间。如果内存不进行释放会造成内存泄漏,从而最终消耗完所有的内存,导致系统崩溃,15.3 内存丢失,例如:p=(int*)malloc(sizeof(int);q=(int*)malloc(sizeof(int);这两行代码分别分配了两块内存,如果进行如下操作。p=q;将q指向的内存地址赋给p,这个时候就会造成p原来指向的内存块丢失,因为此时没有任何指针指向这块内存,也就无法释放这块内存,q的值赋给p之后,再调用free()函数释放p或者q的时候:free(q);或free(p);释放的都只是原先q指向的内存空间,而原先p指向的内存块无法得到释放,也就造成了内存丢失。,15.5 实践练习,1编写程序,定义student结构体类型,它包含学生的学号和姓名,为包含3个student类型的数组分配内存、赋值并输出,使用完后再对内存进行释放。2编写程序,为二维数组进行动态分配内存和释放内存。,END,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 文秘知识


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号