【问题标题】:Windows heap manager and heap segmentsWindows 堆管理器和堆段
【发布时间】:2013-11-03 12:34:21
【问题描述】:
我在一本书中找到了以下句子:
每当堆管理器用完堆段中的已提交空间时,它
显式提交更多内存并将新提交的空间划分为块
随着越来越多的分配请求
这是否意味着当在段中分配块时,用户使用的虚拟内存和元数据不再被视为已提交?
【问题讨论】:
标签:
c++
c
windows
internals
【解决方案1】:
这是我拿的高级Windows调试书,不确定你的意思,因为你在最后有点模糊,但它的基本意思如下:
当你分配堆空间时,堆的内容不一定是预先确定的,所以你可以使用你认为合适的分配空间:例如,我分配了 1 兆字节的堆内存,然后我决定填充它只有 512k 或数据的空间,这意味着我已经提交了一半的分配堆,还剩下 512k 空闲。该内存仍将显示为已被操作系统使用,因为我已将堆分配显式设置为 1024k,但是下次我使用相同的空间时,我可以使用比上次使用的 512k 更多或更少的空间,直到我拥有的数量分配使用。您在给定点使用的金额是提交,您预留的金额是分配。
这一切都大大简化了,我建议阅读以下来源:
作为帮助您开始了解内存及其在 C++ 中的使用的良好资源。
如果您有任何具体或更详细的想法(您的问题有点不清楚),请告诉我,我会尽快回复您。