深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用

上传人:E**** 文档编号:91054711 上传时间:2019-06-21 格式:PPT 页数:20 大小:80KB
返回 下载 相关 举报
深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用_第1页
第1页 / 共20页
深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用_第2页
第2页 / 共20页
深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用_第3页
第3页 / 共20页
深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用_第4页
第4页 / 共20页
深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用》由会员分享,可在线阅读,更多相关《深圳职业技术学院windowsce嵌入式系统开发课程课件堆和栈的使用(20页珍藏版)》请在金锄头文库上搜索。

1、项目6:内存分配PDA的内存管理 (2),本节课程主要知识点 堆 栈 各种内存分配方法的对比,重点和难点,重点 堆和栈的基本概念 难点 堆的使用,堆,堆,堆是一段连续的虚拟地址空间。每一个进程都管理着一个堆。 应用程序在堆中可以动态地分配、释放所需大小的内存块。 在堆内分配内存块可以是任意大小的,而直接分配内存就必须以内存页为单位。,内存的页,内存是以页为单位分配的。 内存页的大小与具体的CPU有关。 页的大小一般是1KB,4KB,64KB等。,本地堆,默认情况下,Windows CE为本地堆保留192KB的虚拟内存空间,如果不够的话,可用函数VirtualAlloc()申请更多的内存。 19

2、2KB的虚拟内存并不立刻提交分配物理内存。 当堆中的块被释放时,系统将查看是否整个页都已经被释放,如果是那个页将被回收。,在本地堆中分配内存,堆内分配内存可以任意大小,单位为字节,所分配的内存称为块。 使用完后注意要回收分配的内存。 在堆中申请内存可使用malloc/free、new/delete、LocalAlloc/LocallFree等函数。 Windows CE5.0只支持堆中固定块的分配,这样随着时间的推移,多次创建释放内存块,堆内就会产生大量内存的碎片。,堆的操作函数,LocalAlloc 在堆中申请内存 LocalFree 释放使用过的内存 HeapCreate 创建堆 Heap

3、Free 释放堆,堆的碎片,在Windows CE5.0创建的堆中,所申请的内存块不能够移动,多次创建内存块、释放内存块会产生内存碎块。 当需要分配一个大一点的、连续的内存块时,本来空闲的内存块加起来足够大,但是这些内存块是分隔的,系统无法分配这些内存碎片。,碎片的解决,程序员如果要频繁的在堆中创建、释放内存块的话,最好自己创建一个单独的堆,而不用默认的堆。 在使用结束后要及时释放掉该内存堆。,栈,栈,栈是进程中的一个重要的数据结构。函数使用栈传递参数,函数中的局部变量也存放在栈中。 每个线程都有一个栈,在线程创建时由系统为其分配。 线程栈的大小默认为64KB,可以通过使用编译器的/STACK

4、SIZE参数,调整栈的大小。,栈的使用,栈不能由用户程序自己创建。 栈的溢出会导致应用程序的退出,程序设计时一定要注意。 不要在较低内存配置的情况下使用大量的栈。,静态数据,Windows CE为应用程序的静态数据分配了read/write和read only两个内存区域。 这两个内存区域以页面为单位来分配内存。 应用程序设计时要尽量保证静态数据区域没有空间的浪费。,各种内存分配方法的对比,直接分配内存,优点 大的内存块最好是直接分配虚拟内存。 是最灵活的内存分配类型。 缺点 担心页面的粒度并需跟踪保留页面和提交页面的情况。,本地堆,优点 使用便利,不需要用户自己创建。 可根据需要来增加。 缺点 多次访问后会产生碎片。 系统没有回收碎片的机制。,单独的堆,优点 完全根据需要来创建。 可以随时释放其内存,从而将内存碎片问题消灭在萌牙状态。 缺点 须手工创建和释放相应的内存,栈,优点 易于使用 缺点 低内存配置时需要考虑栈的大小,静态数据,优点 静态数据的页面总是要分配的 程序设计时,常量数据常置于Read Only区域。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号