学习Windows程序设计的时候遇到一些问题,请明白的朋友帮个忙吧。

[复制链接]
查看11 | 回复2 | 2012-4-11 21:06:17 | 显示全部楼层 |阅读模式
“既然内存被分配后又被释放了,那么就没有发生内存泄露啊,为什么会出现用完的情形呢?”这个用完并不是指真正的用完了,而是未分配内存都变成了碎片,当你需要一个较大内存块的时候,就算这些内存碎片加起来超过需要,依然会分配失败,显而易见了。“请问这里的”内存块不会移动”是什么意思?” 可移动内存是windows内存管理的一种机制,windows会根据需要将可移动内存转移到其他地方(实际物理内存位置不变,只是改变虚拟内存),从而提高内存使用效率。 内存锁定后,内存地址不再改变,同时在切换到其他任务时,不可以对该块内存进行访问。这是多任务环境下对于共享资源采取的互斥机制,保证程序不会因为任务切换而发生错误。所以为什么需要解锁就好理解了吧。至于最...
回复

使用道具 举报

千问 | 2012-4-11 21:06:17 | 显示全部楼层
一、文中所提到的“虚拟内存”指的是应用程序拥有的虚拟4GB的flat段,并不是真正的物理内存。某个程序的空间就是这个虚拟的4GB,当然,每个程序运行在x86上面都会是4GB的虚拟内存空间。而程序A不断做一些不受系统推荐的内存操作(实际上是对自身的4GB操作)时,就会产生碎片。 当碎片多到4GB全占了,就用完了。 而所谓的释放,你指的应该是程序被终结后,他的“...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行