C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt

C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt

ID:51963615

大小:1.60 MB

页数:22页

时间:2020-03-26

C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第1页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第2页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第3页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第4页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第5页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第6页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第7页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第8页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第9页
C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt_第10页
资源描述:

《C语言从入门到精通教学课件作者第2版PPT第15章 存储管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、存储管理内容组织方式动态管理内存丢失内容组织方式开发人员将程序编写完成之后,程序要先装载到计算机的内核或者半导体内存中,再运行程序。程序被组织成4个逻辑段:可执行代码静态数据可执行代码和静态数据存储在固定的内存位置。动态数据(堆)程序请求动态分配的内存来自内存池,也就是上面所列举的堆。栈局部数据对象、函数的参数以及调用函数和被调用函数的联系放在称为栈的内存池中。以上4类根据操作平台和编译器的不同,堆和栈既可以是被所有同时运行的程序共享的操作系统资源,也可以是使用程序独占的局部资源。内存组织方式在内存的全局存储空间当

2、中,用于程序动态分配和释放的内存块称为自由存储空间,通常也称之为堆。在C程序中,是用malloc函数和free函数来从堆中动态地分配和释放内存。堆与栈堆【实例15.1】在堆中分配内存并释放。#includeintmain(){int*pInt;/*定义整型指针*/pInt=(int*)malloc(sizeof(int));/*分配内存*/*pInt=100;/*使用分配内存*/printf("thenumberis:%d",*pInt);/*输出显示数值*/free(pInt);/*释放内存*/re

3、turn0;}程序不会像处理堆那样在栈中显示地分配内存。当程序调用函数和声明局部变量时,系统将自动分配内存。栈是一个后进先出的压入弹出式的数据结构。在程序运行时,需要每次向栈中压入一个对象,然后栈指针向下移动一个位置。当系统从栈中弹出一个对象时,最晚进栈的对象将被弹出,然后栈指针向上移动一个位置。如果栈指针位于栈顶,则表示栈是空的;如果栈指针指向最下面的数据项的后一个位置,则表示栈为满的。其过程如图所示。堆与栈栈【实例15.2】栈在函数调用时的操作。#includevoidDisplayB(char*st

4、ring)/*函数B*/{printf("%s",string);}voidDisplayA(char*string)/*函数A*/{charString[20]="LoveWorld!";printf("%s",string);DisplayB(String);/*调用函数B*/}intmain(){charString[20]="LoveChina!";DisplayA(String);/*将参数传入函数A中*/return0;}动态管理malloc函数该函数的原型如下:void*malloc(unsigned

5、intsize);在stdlib.h头文件中包含该函数,作用是在内存中动态地分配一块size大小的内存空间。malloc函数会返回一个指针,该指针指向分配的内存空间,如果出现错误则返回NULL。【实例15.3】使用malloc函数动态分配空间。#include#includeintmain(){int*iIntMalloc=(int*)malloc(sizeof(int));/*分配空间*/*iIntMalloc=100;/*使用该空间保存数据*/printf("%d",*iInt

6、Malloc);/*输出数据*/return0;}calloc函数该函数的原型如下:void*calloc(unsignedn,unsignedsize);使用该函数也要包含头文件stdlib.h,该函数的功能是在内存中动态分配n个长度为size的连续内存空间数组。calloc函数会返回一个指针,该指针指向动态分配的连续内存空间地址。当分配空间错误时,返回NULL。【实例15.4】使用calloc分配数组内存。#include#includeintmain(){int*pArray;/

7、*定义指针*/inti;/*循环控制变量*/pArray=(int*)calloc(3,sizeof(int));/*数组内存*/for(i=1;i<4;i++)/*使用循环对数组进行赋值*/{*pArray=10*i;/*赋值*/printf("NO%dis:%d",i,*pArray);/*显示结果*/pArray+=1;/*移动指针到数组到下一个元素*/}return0;}realloc函数该函数的原型如下:void*realloc(void*ptr,size_tsize);首先使用该函数要包含头文件stdlib

8、.h,其功能是改变ptr指针指向的空间大小为size大小。设定的size大小可以是任意的,也就是说既可以比原来的数值大,也可以比原来的数值小。返回值是一个指向新地址的指针,如果出现错误则返回NULL。【实例15.5】使用realloc函数重新分配内存。#include#include<

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

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

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