动态内存分配链表.ppt

动态内存分配链表.ppt

ID:48119961

大小:1.35 MB

页数:83页

时间:2019-05-06

动态内存分配链表.ppt_第1页
动态内存分配链表.ppt_第2页
动态内存分配链表.ppt_第3页
动态内存分配链表.ppt_第4页
动态内存分配链表.ppt_第5页
资源描述:

《动态内存分配链表.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章链表开始批量数据的存储批量数据的存储方式:数组存储的缺陷:必须预先指定数组的大小链表:不需要事先指定空间大小,动态分配与释放数组链表太小?太大?主要内容动态内存分配单链表概述单链表结点的基本操作单链表的建立单链表的应用循环链表与约瑟夫环问题1动态内存分配C程序的内存划分内存分配方式动态内存分配函数栈区stack静态区static堆区heap代码区code数据区代码区memory存放程序的代码存放程序的全局数据和静态数据存放程序动态申请的数据存放程序的局部数据和参数1-1C程序的内存划分1、栈区(stack):编译器自动分配释放,存放函数参数、局部变量等。2、

2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回收。3、全局区(静态区)(static):存放全局变量和静态变量,其中初始化的全局与静态变量在一块区域,未初始化的全局与静态变量在相邻的另一块区域。程序结束后由系统释放。4、文字常量区:存放常量字符串,程序结束后由系统释放。5、程序代码区:存放函数体的二进制代码。1-1C程序的内存划分1-2内存分配方式根据内存分配的时机,可分为:静态内存分配;动态内存分配;根据内存分配区域的不同,又可以分为:静态存储区分配;栈区分配;堆区分配;1-2内存分配方式1、 从静态存储区域分配。编译阶段完成分

3、配,在程序结束后内存空间才会被释放。例如全局变量,static变量。2、 在栈区创建。在执行函数时,函数局部变量可在栈区创建,函数执行结束时自动释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。1-2内存分配方式3、 从堆区分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意内存,程序员负责用free或delete释放内存。生存期由程序员决定,使用非常灵活。如何使用一个大数组:栈区分配?静态区分配&&堆区分配?1-2内存分配方式静态内存分配把内存的控制权交给了编译器,而动态内存分配则把内存的控制权交给了程序员动态内存管理

4、水平严重依赖于程序员的水平,如果处理不当容易造成内存泄漏动态内存的分配与释放需要占用额外的CPU资源要避免频繁的使用动态内存分配静态分配与动态分配的注意事项1-3C的动态内存分配函数动态内存分配函数是C的标准函数,函数的原型声明在头文件中给出C提供下列与动态内存分配相关的函数void*malloc(unsignedintsize);void*calloc(unsignedintn,unsignedintsize);void*realloc(void*p_block,unsignedintsize);voidfree(void*p_block);1

5、-3C的动态内存分配函数malloc函数:void*malloc(unsignedintsize);向系统申请分配指定字节数的存储空间:分配成功:返回新分配存储空间的首地址,新分配存储空间未被初始化;分配失败:返回NULL例如:inti,*p=(int*)malloc(6*sizeof(int));if(p)for(i=0;i<6;i++)p[i]=i;elseprintf("dynamicallocfailed!");1-3C的动态内存分配函数#include#includeintmain(){inti,j;int*array

6、=NULL;scanf("%d",&i);array=(int*)malloc(i*sizeof(int));for(j=0;j

7、,而静态分配的存储空间当程序运行完成的时候自动释放1-3C的动态内存分配函数#include#includeintmain(){inti,j;int*array=NULL;scanf("%d",&i);array=(int*)malloc(i*sizeof(int));for(j=0;j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。