欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    专题五 - 内存管理的艺术.pdf

    • 资源ID:19245545       资源大小:6.25MB        全文页数:39页
    • 资源格式: PDF        下载积分:10.8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10.8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    专题五 - 内存管理的艺术.pdf

    版权声明版权声明版权声明版权声明:本课件及其印刷物本课件及其印刷物本课件及其印刷物本课件及其印刷物、视频的版权归成都国嵌信息技术有限公司所有视频的版权归成都国嵌信息技术有限公司所有视频的版权归成都国嵌信息技术有限公司所有视频的版权归成都国嵌信息技术有限公司所有,并保留所有权力并保留所有权力并保留所有权力并保留所有权力:任何单任何单任何单任何单位或个人未经成都国嵌信息技术有限公司书面授权位或个人未经成都国嵌信息技术有限公司书面授权位或个人未经成都国嵌信息技术有限公司书面授权位或个人未经成都国嵌信息技术有限公司书面授权,不得使用该课件及其印刷物不得使用该课件及其印刷物不得使用该课件及其印刷物不得使用该课件及其印刷物、视频从事商业视频从事商业视频从事商业视频从事商业、教学活教学活教学活教学活动动动动。已经取得书面授权的已经取得书面授权的已经取得书面授权的已经取得书面授权的,应在授权范围内使用应在授权范围内使用应在授权范围内使用应在授权范围内使用,并注明并注明并注明并注明“来源来源来源来源:国嵌国嵌国嵌国嵌”。违反上述声明者违反上述声明者违反上述声明者违反上述声明者,我们将追究其我们将追究其我们将追究其我们将追究其法律责任法律责任法律责任法律责任。专题五专题五专题五专题五内存管理的艺术内存管理的艺术内存管理的艺术内存管理的艺术嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents动态内存分配动态内存分配动态内存分配动态内存分配程序中的三国天下程序中的三国天下程序中的三国天下程序中的三国天下程序的内存布局程序的内存布局程序的内存布局程序的内存布局头疼的野指针头疼的野指针头疼的野指针头疼的野指针嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents经典错误经典错误经典错误经典错误,你犯了吗你犯了吗你犯了吗你犯了吗交通规则交通规则交通规则交通规则,还是应该遵守还是应该遵守还是应该遵守还是应该遵守嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents动态内存分配动态内存分配动态内存分配动态内存分配程序中的三国天下程序中的三国天下程序中的三国天下程序中的三国天下程序的内存布局程序的内存布局程序的内存布局程序的内存布局头疼的野指针头疼的野指针头疼的野指针头疼的野指针嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116为什么使用动态内存分配为什么使用动态内存分配为什么使用动态内存分配为什么使用动态内存分配? C C C C语言中的一切操作都是基于内存的语言中的一切操作都是基于内存的语言中的一切操作都是基于内存的语言中的一切操作都是基于内存的? 变量和数组都是内存的别名变量和数组都是内存的别名变量和数组都是内存的别名变量和数组都是内存的别名,如何分配这些内存由编如何分配这些内存由编如何分配这些内存由编如何分配这些内存由编译器在编译期间决定译器在编译期间决定译器在编译期间决定译器在编译期间决定? 定义数组的时候必须指定数组长度定义数组的时候必须指定数组长度定义数组的时候必须指定数组长度定义数组的时候必须指定数组长度? 而数组长度是在编译期就必须决定的而数组长度是在编译期就必须决定的而数组长度是在编译期就必须决定的而数组长度是在编译期就必须决定的需求需求需求需求:程序运行的过程中程序运行的过程中程序运行的过程中程序运行的过程中,可能需要使用一些额外的内存空间可能需要使用一些额外的内存空间可能需要使用一些额外的内存空间可能需要使用一些额外的内存空间。example1-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116malloc和和和和free? malloc和和和和free用于执行动态内存分配和释放用于执行动态内存分配和释放用于执行动态内存分配和释放用于执行动态内存分配和释放内存池内存池内存池内存池程序程序程序程序mallocfree申请申请申请申请归还归还归还归还嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116malloc和和和和free? malloc所分配的是一块连续的内存所分配的是一块连续的内存所分配的是一块连续的内存所分配的是一块连续的内存,以字节为单位以字节为单位以字节为单位以字节为单位,并且不带任何的类型信息并且不带任何的类型信息并且不带任何的类型信息并且不带任何的类型信息? free用于将动态内存归还系统用于将动态内存归还系统用于将动态内存归还系统用于将动态内存归还系统void* malloc(size_t size);void free(void* pointer);注意注意注意注意:malloc实际分配的内存可能会比请求的稍微多一点实际分配的内存可能会比请求的稍微多一点实际分配的内存可能会比请求的稍微多一点实际分配的内存可能会比请求的稍微多一点,但是不但是不但是不但是不能依赖于编译器的这个行为能依赖于编译器的这个行为能依赖于编译器的这个行为能依赖于编译器的这个行为当请求的动态内存无法满足时当请求的动态内存无法满足时当请求的动态内存无法满足时当请求的动态内存无法满足时malloc返回返回返回返回NULL当当当当free的参数为的参数为的参数为的参数为NULL时时时时,函数直接返回函数直接返回函数直接返回函数直接返回嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116calloc和和和和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时时时时,等价于等价于等价于等价于嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116calloc和和和和realloc的使用的使用的使用的使用实例分析实例分析实例分析实例分析1-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116小结小结小结小结? 动态内存分配是动态内存分配是动态内存分配是动态内存分配是C C C C语言中的强大功能语言中的强大功能语言中的强大功能语言中的强大功能? 程序能够在需要的时候有机会使用更多的内存程序能够在需要的时候有机会使用更多的内存程序能够在需要的时候有机会使用更多的内存程序能够在需要的时候有机会使用更多的内存? malloc单纯的从系统中申请固定字节大小的内存单纯的从系统中申请固定字节大小的内存单纯的从系统中申请固定字节大小的内存单纯的从系统中申请固定字节大小的内存? calloc能以类型大小为单位申请内存并初始化为能以类型大小为单位申请内存并初始化为能以类型大小为单位申请内存并初始化为能以类型大小为单位申请内存并初始化为0 0 0 0? realloc用于重置内存大小用于重置内存大小用于重置内存大小用于重置内存大小嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116问题问题问题问题malloc(0);将返回什么将返回什么将返回什么将返回什么?嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents动态内存分配动态内存分配动态内存分配动态内存分配程序中的三国天下程序中的三国天下程序中的三国天下程序中的三国天下程序的内存布局程序的内存布局程序的内存布局程序的内存布局头疼的野指针头疼的野指针头疼的野指针头疼的野指针嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序中的栈程序中的栈程序中的栈程序中的栈? 栈是现代计算机程序里最为重要的概念之一栈是现代计算机程序里最为重要的概念之一栈是现代计算机程序里最为重要的概念之一栈是现代计算机程序里最为重要的概念之一? 栈在程序中用于维护函数调用上下文栈在程序中用于维护函数调用上下文栈在程序中用于维护函数调用上下文栈在程序中用于维护函数调用上下文,没有栈就没有没有栈就没有没有栈就没有没有栈就没有函数函数函数函数,没有局部变量没有局部变量没有局部变量没有局部变量嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序中的栈程序中的栈程序中的栈程序中的栈? 栈保存了一个函数调用所需的维护信息栈保存了一个函数调用所需的维护信息栈保存了一个函数调用所需的维护信息栈保存了一个函数调用所需的维护信息? 函数参数函数参数函数参数函数参数,函数返回地址函数返回地址函数返回地址函数返回地址? 局部变量局部变量局部变量局部变量? 函数调用上下文函数调用上下文函数调用上下文函数调用上下文嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序中的堆程序中的堆程序中的堆程序中的堆? 为什么有了栈还需要堆为什么有了栈还需要堆为什么有了栈还需要堆为什么有了栈还需要堆?? 栈上的数据在函数返回后就会被释放掉栈上的数据在函数返回后就会被释放掉栈上的数据在函数返回后就会被释放掉栈上的数据在函数返回后就会被释放掉,无法传递到函数外无法传递到函数外无法传递到函数外无法传递到函数外部部部部,如如如如:局部数组局部数组局部数组局部数组? 堆是程序中一块巨大的内存空间堆是程序中一块巨大的内存空间堆是程序中一块巨大的内存空间堆是程序中一块巨大的内存空间,可由程序自由使用可由程序自由使用可由程序自由使用可由程序自由使用? 堆中被程序申请使用的内存在程序主动释放前将一直堆中被程序申请使用的内存在程序主动释放前将一直堆中被程序申请使用的内存在程序主动释放前将一直堆中被程序申请使用的内存在程序主动释放前将一直有效有效有效有效堆空间通过申请才能堆空间通过申请才能堆空间通过申请才能堆空间通过申请才能获得获得获得获得!嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序中的堆程序中的堆程序中的堆程序中的堆? 系统对堆空间的管理方式系统对堆空间的管理方式系统对堆空间的管理方式系统对堆空间的管理方式? 空闲链表法空闲链表法空闲链表法空闲链表法,位图法位图法位图法位图法,对象池法等等对象池法等等对象池法等等对象池法等等12 Bytes5 Bytes50 Bytes100 Bytes空闲链空闲链空闲链空闲链表指针表指针表指针表指针NULLNULLNULLNULL空闲链表管理法示意图空闲链表管理法示意图空闲链表管理法示意图空闲链表管理法示意图嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序中的静态存储区程序中的静态存储区程序中的静态存储区程序中的静态存储区? 程序静态存储区随着程序的运行而分配空间程序静态存储区随着程序的运行而分配空间程序静态存储区随着程序的运行而分配空间程序静态存储区随着程序的运行而分配空间,直到程直到程直到程直到程序运行结束序运行结束序运行结束序运行结束? 在程序的编译期静态存储区的大小就已经确定在程序的编译期静态存储区的大小就已经确定在程序的编译期静态存储区的大小就已经确定在程序的编译期静态存储区的大小就已经确定? 程序的静态存储区主要用于保存程序中的全局变量和程序的静态存储区主要用于保存程序中的全局变量和程序的静态存储区主要用于保存程序中的全局变量和程序的静态存储区主要用于保存程序中的全局变量和静态变量静态变量静态变量静态变量? 与栈和堆不同与栈和堆不同与栈和堆不同与栈和堆不同,静态存储区的信息最终会保存到可执静态存储区的信息最终会保存到可执静态存储区的信息最终会保存到可执静态存储区的信息最终会保存到可执行程序中行程序中行程序中行程序中嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116小结小结小结小结? 栈栈栈栈,堆和静态存储区是堆和静态存储区是堆和静态存储区是堆和静态存储区是C C C C语言程序常涉及的三个基本内语言程序常涉及的三个基本内语言程序常涉及的三个基本内语言程序常涉及的三个基本内存区存区存区存区? 栈区主要用于函数调用的使用栈区主要用于函数调用的使用栈区主要用于函数调用的使用栈区主要用于函数调用的使用? 堆区主要是用于内存的动态申请和归还堆区主要是用于内存的动态申请和归还堆区主要是用于内存的动态申请和归还堆区主要是用于内存的动态申请和归还? 静态存储区用于保存全局变量和静态变量静态存储区用于保存全局变量和静态变量静态存储区用于保存全局变量和静态变量静态存储区用于保存全局变量和静态变量嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents动态内存分配动态内存分配动态内存分配动态内存分配程序中的三国天下程序中的三国天下程序中的三国天下程序中的三国天下程序的内存布局程序的内存布局程序的内存布局程序的内存布局头疼的野指针头疼的野指针头疼的野指针头疼的野指针嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序文件的一般布局程序文件的一般布局程序文件的一般布局程序文件的一般布局? 代码在可执行程序中的对应关系代码在可执行程序中的对应关系代码在可执行程序中的对应关系代码在可执行程序中的对应关系嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116a.out进程的地址空间进程的地址空间进程的地址空间进程的地址空间程序的内存布局程序的内存布局程序的内存布局程序的内存布局? 文件布局在内存中映射文件布局在内存中映射文件布局在内存中映射文件布局在内存中映射File Header .text .data.bssa.out.text .data.bss高内存地址高内存地址高内存地址高内存地址未映射区域未映射区域未映射区域未映射区域栈栈栈栈堆堆堆堆嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序的内存布局程序的内存布局程序的内存布局程序的内存布局? 各个段的作用各个段的作用各个段的作用各个段的作用? 堆栈段在程序运行后才正式存在堆栈段在程序运行后才正式存在堆栈段在程序运行后才正式存在堆栈段在程序运行后才正式存在,是程序运行的基础是程序运行的基础是程序运行的基础是程序运行的基础? .bss段存放的是未初始化的全局变量和静态变量段存放的是未初始化的全局变量和静态变量段存放的是未初始化的全局变量和静态变量段存放的是未初始化的全局变量和静态变量? .text段存放的是程序中的可执行代码段存放的是程序中的可执行代码段存放的是程序中的可执行代码段存放的是程序中的可执行代码? .data段保存的是那些已经初始化了的全局变量和静态变量段保存的是那些已经初始化了的全局变量和静态变量段保存的是那些已经初始化了的全局变量和静态变量段保存的是那些已经初始化了的全局变量和静态变量? .rodata段存放程序中的常量值段存放程序中的常量值段存放程序中的常量值段存放程序中的常量值,如字符串常量如字符串常量如字符串常量如字符串常量嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116程序术语对应关系程序术语对应关系程序术语对应关系程序术语对应关系? 静态存储区通常指程序中的静态存储区通常指程序中的静态存储区通常指程序中的静态存储区通常指程序中的.bss和和和和.data段段段段? 只读区通常指程序中的只读区通常指程序中的只读区通常指程序中的只读区通常指程序中的.rodata段段段段? 局部变量所占空间为栈上空间局部变量所占空间为栈上空间局部变量所占空间为栈上空间局部变量所占空间为栈上空间? 动态空间为堆中的空间动态空间为堆中的空间动态空间为堆中的空间动态空间为堆中的空间? 程序可执行代码存放于程序可执行代码存放于程序可执行代码存放于程序可执行代码存放于.text段段段段问题问题问题问题:函数的地址对应程序的哪个段函数的地址对应程序的哪个段函数的地址对应程序的哪个段函数的地址对应程序的哪个段?嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116课后思考课后思考课后思考课后思考同是全部变量和静态变量同是全部变量和静态变量同是全部变量和静态变量同是全部变量和静态变量,为什么初始化的和未初始化为什么初始化的和未初始化为什么初始化的和未初始化为什么初始化的和未初始化的保存在不同段中的保存在不同段中的保存在不同段中的保存在不同段中?嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents动态内存分配动态内存分配动态内存分配动态内存分配程序中的三国天下程序中的三国天下程序中的三国天下程序中的三国天下程序的内存布局程序的内存布局程序的内存布局程序的内存布局头疼的野指针头疼的野指针头疼的野指针头疼的野指针嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116初识野指针初识野指针初识野指针初识野指针? 野指针通常是因为指针变量中保存的值不是一个合法野指针通常是因为指针变量中保存的值不是一个合法野指针通常是因为指针变量中保存的值不是一个合法野指针通常是因为指针变量中保存的值不是一个合法的内存地址而造成的的内存地址而造成的的内存地址而造成的的内存地址而造成的? 野指针不是野指针不是野指针不是野指针不是NULL指针指针指针指针,是指向不可用内存的指针是指向不可用内存的指针是指向不可用内存的指针是指向不可用内存的指针? NULL指针不容易用错指针不容易用错指针不容易用错指针不容易用错,因为因为因为因为if语句很好判断一个指针语句很好判断一个指针语句很好判断一个指针语句很好判断一个指针是不是是不是是不是是不是NULLC C C C语言中没有任何手段可以判断语言中没有任何手段可以判断语言中没有任何手段可以判断语言中没有任何手段可以判断一个指针是否为野指针一个指针是否为野指针一个指针是否为野指针一个指针是否为野指针!嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116? 局部指针变量没有被初始化局部指针变量没有被初始化局部指针变量没有被初始化局部指针变量没有被初始化? 使用已经释放过后的指针使用已经释放过后的指针使用已经释放过后的指针使用已经释放过后的指针? 指针所指向的变量在指针之前被销毁指针所指向的变量在指针之前被销毁指针所指向的变量在指针之前被销毁指针所指向的变量在指针之前被销毁野指针的由来野指针的由来野指针的由来野指针的由来example4-1.cexample4-2.cexample4-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents经典错误经典错误经典错误经典错误,你犯了吗你犯了吗你犯了吗你犯了吗交通规则交通规则交通规则交通规则,还是应该遵守还是应该遵守还是应该遵守还是应该遵守嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116非法内存操作分析非法内存操作分析非法内存操作分析非法内存操作分析? 结构体成员指针未初始化结构体成员指针未初始化结构体成员指针未初始化结构体成员指针未初始化? 没有为结构体指针分配足够的内存没有为结构体指针分配足够的内存没有为结构体指针分配足够的内存没有为结构体指针分配足够的内存oops5-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116内存初始化分析内存初始化分析内存初始化分析内存初始化分析? 内存分配成功内存分配成功内存分配成功内存分配成功,但并未初始化但并未初始化但并未初始化但并未初始化oops5-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116内存越界分析内存越界分析内存越界分析内存越界分析? 数组越界数组越界数组越界数组越界oops5-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116内存泄露分析内存泄露分析内存泄露分析内存泄露分析oops5-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116多次指针释放多次指针释放多次指针释放多次指针释放oops5-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116使用已释放的指针使用已释放的指针使用已释放的指针使用已释放的指针oops5-嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116Contents经典错误经典错误经典错误经典错误,你犯了吗你犯了吗你犯了吗你犯了吗交通规则交通规则交通规则交通规则,还是应该遵守还是应该遵守还是应该遵守还是应该遵守嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116C语言中的交通规则语言中的交通规则语言中的交通规则语言中的交通规则? 用用用用malloc申请了内存之后申请了内存之后申请了内存之后申请了内存之后,应该立即检查指针值是否应该立即检查指针值是否应该立即检查指针值是否应该立即检查指针值是否为为为为NULL,防止使用值为防止使用值为防止使用值为防止使用值为NULL的指针的指针的指针的指针嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116C语言中的交通规则语言中的交通规则语言中的交通规则语言中的交通规则? 牢记数组的长度牢记数组的长度牢记数组的长度牢记数组的长度,防止数组越界操作防止数组越界操作防止数组越界操作防止数组越界操作,考虑使用柔性考虑使用柔性考虑使用柔性考虑使用柔性数组数组数组数组嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116C语言中的交通规则语言中的交通规则语言中的交通规则语言中的交通规则? 动态申请操作必须和释放操作匹配动态申请操作必须和释放操作匹配动态申请操作必须和释放操作匹配动态申请操作必须和释放操作匹配,防止内存泄露和防止内存泄露和防止内存泄露和防止内存泄露和多次释放多次释放多次释放多次释放嵌入式嵌入式嵌入式嵌入式Linux技术咨询技术咨询技术咨询技术咨询QQ号号号号: 550491596嵌入式嵌入式嵌入式嵌入式Linux学习交流学习交流学习交流学习交流QQ群群群群: 65212116C语言中的交通规则语言中的交通规则语言中的交通规则语言中的交通规则? free指针之后必须立即赋值为指针之后必须立即赋值为指针之后必须立即赋值为指针之后必须立即赋值为NULL

    注意事项

    本文(专题五 - 内存管理的艺术.pdf)为本站会员(安***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开