C语言_第15章_第1页
C语言_第15章_第2页
C语言_第15章_第3页
C语言_第15章_第4页
C语言_第15章_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十五章内存管理 第十五章内存管理 15 1内存组织形式15 2内存管理15 3内存丢失15 4实战练习 本章学习内容 15 1内存组织形式 程序运行前 需要先被装载到内存中 内存组织形式分为4个逻辑段1 可执行代码2 静态数据 可执行代码和静态数据存储在内存的固定位置3 动态数据 程序请求中动态分配的内存 也就是堆4 栈 局部数据对象 函数参数以及调用函数和被调用函数的联系 15 1内存组织形式 在内存存储空间中 用于程序动态分配和释放的内存块称为自由存储空间 通常称为堆堆允许程序在运行时动态的申请内存空间malloc 函数从堆中分配内存free 函数将内存释放到堆 15 1内存组织形式 栈从数据结构角度来说 是一个后进先出的压入弹出式数据结构 包括栈顶指针和栈底指针系统中的栈空间是系统用来自动处理的内存空间 程序中的局部对象 函数参数以及调用函数和被调用函数的联系 都存放在栈中 15 2内存管理函数 15 2 1malloc 函数功能 在内存中动态的分配一块内存空间形式 void malloc unsignedintsize size是分配内存块大小 字节 例如 int p p int malloc sizeof int 15 2内存管理函数 15 2 2calloc 函数功能 在内存中分配n个长度为size字节的连续的内存空间形式 void calloc unsignedintn unsignedintsize 例如 int arr arr int calloc 5 sizeof int 15 2内存管理函数 15 2 3realloc 函数功能 更改已经配置的内存空间 使指针重新指向一个内存空间形式 void realloc void ptr size tsize 例如 double p double malloc sizeof double int q realloc p sizeof int 15 2内存管理函数 15 2 4free 函数功能 释放内存空间形式 voidfree 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论