第二十九课 - 动态内存分配_第1页
第二十九课 - 动态内存分配_第2页
第二十九课 - 动态内存分配_第3页
第二十九课 - 动态内存分配_第4页
第二十九课 - 动态内存分配_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

版权声明版权声明版权声明版权声明 本课件及其印刷物本课件及其印刷物本课件及其印刷物本课件及其印刷物 视频的版权归成都国嵌信息技术有限公司所有视频的版权归成都国嵌信息技术有限公司所有视频的版权归成都国嵌信息技术有限公司所有视频的版权归成都国嵌信息技术有限公司所有 并保留所有权力并保留所有权力并保留所有权力并保留所有权力 任何单任何单任何单任何单 位或个人未经成都国嵌信息技术有限公司书面授权位或个人未经成都国嵌信息技术有限公司书面授权位或个人未经成都国嵌信息技术有限公司书面授权位或个人未经成都国嵌信息技术有限公司书面授权 不得使用该课件及其印刷物不得使用该课件及其印刷物不得使用该课件及其印刷物不得使用该课件及其印刷物 视频从事商业视频从事商业视频从事商业视频从事商业 教学活教学活教学活教学活 动动动动 已经取得书面授权的已经取得书面授权的已经取得书面授权的已经取得书面授权的 应在授权范围内使用应在授权范围内使用应在授权范围内使用应在授权范围内使用 并注明并注明并注明并注明 来源来源来源来源 国嵌国嵌国嵌国嵌 违反上述声明者违反上述声明者违反上述声明者违反上述声明者 我们将追究其我们将追究其我们将追究其我们将追究其 法律责任法律责任法律责任法律责任 第二十九课第二十九课第二十九课第二十九课 动态内存分配动态内存分配动态内存分配动态内存分配 嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号 550491596 嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群 65212116 为什么使用动态内存分配为什么使用动态内存分配为什么使用动态内存分配为什么使用动态内存分配 C C C C语言中的一切操作都是基于内存的语言中的一切操作都是基于内存的语言中的一切操作都是基于内存的语言中的一切操作都是基于内存的 变量和数组都是内存的别名变量和数组都是内存的别名变量和数组都是内存的别名变量和数组都是内存的别名 如何分配这些内存由编如何分配这些内存由编如何分配这些内存由编如何分配这些内存由编 译器在编译期间决定译器在编译期间决定译器在编译期间决定译器在编译期间决定 定义数组的时候必须指定数组长度定义数组的时候必须指定数组长度定义数组的时候必须指定数组长度定义数组的时候必须指定数组长度 而数组长度是在编译期就必须决定的而数组长度是在编译期就必须决定的而数组长度是在编译期就必须决定的而数组长度是在编译期就必须决定的 需求需求需求需求 程序运行的过程中程序运行的过程中程序运行的过程中程序运行的过程中 可能需要使用一些额外的内存空间可能需要使用一些额外的内存空间可能需要使用一些额外的内存空间可能需要使用一些额外的内存空间 example1 1 c 嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号 550491596 嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群 65212116 malloc和和和和free malloc和和和和free用于执行动态内存分配和释放用于执行动态内存分配和释放用于执行动态内存分配和释放用于执行动态内存分配和释放 内存池内存池内存池内存池 程序程序程序程序 mallocfree 申请申请申请申请归还归还归还归还 嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号 550491596 嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群 65212116 malloc和和和和free malloc所分配的是一块连续的内存所分配的是一块连续的内存所分配的是一块连续的内存所分配的是一块连续的内存 以字节为单位以字节为单位以字节为单位以字节为单位 并且不带任何的类型信息并且不带任何的类型信息并且不带任何的类型信息并且不带任何的类型信息 free用于将动态内存归还系统用于将动态内存归还系统用于将动态内存归还系统用于将动态内存归还系统 void malloc size t size void free void pointer 注意注意注意注意 malloc实际分配的内存可能会比请求的稍微多一点实际分配的内存可能会比请求的稍微多一点实际分配的内存可能会比请求的稍微多一点实际分配的内存可能会比请求的稍微多一点 但是不但是不但是不但是不 能依赖于编译器的这个行为能依赖于编译器的这个行为能依赖于编译器的这个行为能依赖于编译器的这个行为 当请求的动态内存无法满足时当请求的动态内存无法满足时当请求的动态内存无法满足时当请求的动态内存无法满足时malloc返回返回返回返回NULL 当当当当free的参数为的参数为的参数为的参数为NULL时时时时 函数直接返回函数直接返回函数直接返回函数直接返回 嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号 550491596 嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群 65212116 calloc和和和和realloc 你认识你认识你认识你认识malloc的兄弟吗的兄弟吗的兄弟吗的兄弟吗 void calloc size t num size t size void realloc void pointer size t new size calloc的参数代表所返回内存的类型信息的参数代表所返回内存的类型信息的参数代表所返回内存的类型信息的参数代表所返回内存的类型信息 calloc会将返回的内存初始化为会将返回的内存初始化为会将返回的内存初始化为会将返回的内存初始化为0 0 0 0 realloc用于修改一个原先已经分配的内存块大小用于修改一个原先已经分配的内存块大小用于修改一个原先已经分配的内存块大小用于修改一个原先已经分配的内存块大小 在使用在使用在使用在使用realloc之后应该使用其返回值之后应该使用其返回值之后应该使用其返回值之后应该使用其返回值 当当当当pointer的第一个参数为的第一个参数为的第一个参数为的第一个参数为NULL时时时时 等价于等价于等价于等价于malloc 嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号 550491596 嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群 65212116 calloc和和和和realloc的使用的使用的使用的使用 实例分析实例分析实例分析实例分析1 1 嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号 550491596 嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群 65212116 小结小结小结小结 动态内存分配是动态内存分配是动态内存分配是动态内存分配是C C C C语言中的强大功能语言中的强大功能语言中的强大功能语言中的强大功能 程序能够在需要的时候有机会使用更多的内存程序能够在需要的时候有机会使用更多的内存程序能够在需要的时候有机会使用更多的内存程序能够在需要的时候有机会使用更多的内存 malloc单纯的从系统中申请固定字节大小的内存单纯的从系统中申请固定字节大小的内存单纯的从系统中申请固定字节大小的内存单纯的从系统中申请固定字节大小的内存 calloc能以类型大小为单位申请内存并初始化为能以类型大小为单位申请内存并初始化为能以类型大小为单位申请内存并初始化为能以类型大小为单位申请内存并初始化为0 0 0 0 realloc用于重置内

温馨提示

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

评论

0/150

提交评论