WinCE分配连续的物理内存失败后,不释放占用空间

卓卓有余 2012-08-31 04:58:47
环境:Windows CE 5.0的系统,硬件为三星S3C2416,一片64Mb的DDR;使用vs2005开发

现象:用HalAllocateCommonBuffer分配连续的物理内存失败后,发现可用内存变少了,不释放占用的空间;
注:使用AllocPhysMem 分配 同样现象。

应用:目前主要是使用2D库,创建N多图片的连续物理地址空间,其中一些根据画面动态创建 和 释放。现在发现很容易没有连续的物理内存。

使用这两个 函数分配失败后,返回的虚拟地址为NULL,但是可用内存的变少,也无法调用HalFreeCommonBuffer 或者 FreePhysMem 释放。估计是系统没有连续的物理内存,然后分配了不连续的内存,但是却返回一个NULL,导致释放函数没有可以传入的参数来执行。


这应该是微软的一个 非常非常严重的BUG?
...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
卓卓有余 2012-09-04
  • 打赏
  • 举报
回复
我的wince5.0安装的补丁已经是2011年的rollup。现在手上没有其他的wince。AllocPhysMem是否有源码可以查看?
卓卓有余 2012-09-03
  • 打赏
  • 举报
回复
是内存减少了,在系统属性里面的程序内存可以看到减少了。
zhenghn2010 2012-09-03
  • 打赏
  • 举报
回复
是真的内存减少,还是连续的物理内存减少? 真的内存减少的确是问题。
而连续的大块内存减少,往往就是说的内存碎片较多,应该不是问题。
尤其大块连续内存的申请,多次内存申请释放后,很难达到要求。
系统往往也有碎片整理的功能,但最好是对应大块内存的管理,实现申请好一段,自己管理使用。
卓卓有余 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你是在那一层分配内存?APP层还是驱动层?


微软应该没有这样严重的BUG。
[/Quote]

在应用程序分配的,这个有问题?
卓卓有余 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你是在那一层分配内存?APP层还是驱动层?


微软应该没有这样严重的BUG。
[/Quote]

在应用程序分配的,这个有问题?
bbstr 2012-09-03
  • 打赏
  • 举报
回复
装一下微软的wince5的update包,然后做一个OS,再看看有没有这个问题。

还有把你的这个程序,放到别的wince5设备上试试

个人觉得微软不会有这么弱智的问题出来,大多是OEM厂商做的有问题
xqhrs232 2012-08-31
  • 打赏
  • 举报
回复
你是在那一层分配内存?APP层还是驱动层?


微软应该没有这样严重的BUG。
xqhrs232 2012-08-31
  • 打赏
  • 举报
回复
你是在那一层分配内存?APP层还是驱动层?


微软应该没有这样严重的BUG。
卓卓有余 2012-08-31
  • 打赏
  • 举报
回复
说得简单一点就是 分配10M的连续物理内存,失败了,系统可用内存还是减少了10M,不过函数返回的虚拟地址是NULL,怎么才能释放这10M?FreePhysMem的传入参数没有了。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧