Wince程序内存和存储内存

Wince程序内存和存储内存

ID:37905168

大小:25.50 KB

页数:5页

时间:2019-06-02

Wince程序内存和存储内存_第1页
Wince程序内存和存储内存_第2页
Wince程序内存和存储内存_第3页
Wince程序内存和存储内存_第4页
Wince程序内存和存储内存_第5页
资源描述:

《Wince程序内存和存储内存》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Wince程序内存和存储内存Wince下的内存实际上是分为三个部分的.先说这几部分的名字,对象存储,系统内存,程序内存.准确来讲,应该用下面公式说明Wince内存=系统内存+(对象存储+程序内存).这里德内存也就是我们平时说的SDRAM,而我们的平台用的64M的SDRAM。 在wince系统的控制面板系统中可以看到系统内存在30M左右,但是硬件上SDRAM明明是64M,为什么这里只有30M呢?因为wince系统本身运行要占用30M左右内存。这里可以把这部分内存称为系统内存。其实wince正常给我们用的内存只有30M左右,前提是你用的SDRAM是64M。下面我们就仔细分析下剩下的

2、这30M。也就是程序内存和储存内存(对象储存)。程序内存不用解释,就是可供我们的程序用的内存。对象存储是wince里一个新的概念.嵌入式wince操作系统一般是用在消费电子上面,比如pocketpc,手机,PDA等移动设备上.这一类的设备一般都是有两个电源的,一个是主电源(比如你的手机电池),一个是后备电池(拆开手机,电路板上可以找到那个小电池).后备电池的作用就是在主电源没电的情况下,维持操作系统的一些需要保存的数据,比如注册表,数据库等.5而这些要保存的数据就是放在对象存储里的,可以复制一个文件到wince下(SD卡,U盘除外),会发现对象存储占用空间变大,到这里,你应该理

3、解对象存储了。现在整个wince内存分配有个清楚的概念了,但是我们在平时运用时经常会遇到应用程序开辟一段内存导致应用程序挂了的现象。这里不管你是动态申请的还是干吗。如果内存分配中程序内存过小。这里前提是你的应用程序很大很复杂,这种现象肯定会有的。 那么怎么才能申请到大的内存空间呢?当然你可以在控制面板中滑动那个分配程序内存和储存内存大小的滑动条,但是这种情况在系统冷启动后有恢复成系统默认的了。就是他们两对半开。那么是不是我们不能修改这个值了呢?没关系。既然微软让你看到这个玩意肯定有地方改的。上网google下很多办法。这里我介绍两种:1.在config.bib中有个CONFIG

4、这里的详细内容可以参考何宗建老师的书。在CONFIG字段下面加入     FSRAMPERCENT=0x20202020。这里为什么是0x20202020。可以参考网上牛人的公式。FSRAMPERCENT是一个4byte长度的十六进制数,我们用代数假设FSRAMPERCENT=0xQXYZ,其中Q,X,Y,Z都是十六进制数那么最终划分给StorageMemory的大小=(Q+X+Y+Z)/0x400*TOTAL_RAM_SIZE以我平台例子可以发现StorageMemory=(0x20+0x20+0x20+0x20)/0x400*64=3800KB.52.网上也有人说动态分配不

5、过这个办法我没有试验过不知道是不是成功的。其实我个人觉得如果动态分配很稳定的话肯定是动态的好了,这样可以根据不同的应用来分配不同的程序内存大小。typedefDWORD(*SETSYSTEMMEMORYDIVISION)(DWORD);typedefBOOL(*GETSYSTEMMEMORYDIVISION)(LPDWORD,LPDWORD,LPDWORD);voidSetObjectMemorySpace(intnSize){#ifdef_WIN32_WCE   //从动态库中获取函数地址以设置对象存储区的大小.   HINSTANCEhDll=LoadLibrary(_T(

6、"Coredll.dll"));   SETSYSTEMMEMORYDIVISION   SetSystemMemoryDivisionProc=NULL;   GETSYSTEMMEMORYDIVISION   GetSystemMemoryDivisionProc=NULL;   if(NULL!=hDll)   {       //获取导出函数地址       SetSystemMemoryDivisionProc=5(SETSYSTEMMEMORYDIVISION)GetProcAddress(hDll,_T("SetSystemMemoryDivision"));  

7、     GetSystemMemoryDivisionProc=(GETSYSTEMMEMORYDIVISION)GetProcAddress(hDll,_T("GetSystemMemoryDivision"));       if(SetSystemMemoryDivisionProc&&GetSystemMemoryDivisionProc)       {           DWORDdwStorePages=0;           DWORDdwRamPages=0;    

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

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

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