windows进程堆和空间(107)

看进程空间

每个进程都有自己的虚拟空间(win32程序中每个进程拥有4GB的虚拟地址空间,每个进程都有各自编址,同一个数据块在不同进程编址可能不一样,这存在调度问题:)

虚拟空间被分为好几个区:空指针赋值区、用户模式区、64k禁入区(为了分开内核和用户的边界区)、内核模式区

分配的空间大小事分配粒度的倍数。
涉及给分区调拨物理存储器,映射虚拟内存到物理内存

######来说下堆
用户模式区装载exe、dll等数据。

程序开始开辟进程,进程开辟堆空间。也就是默认1mb的缺省堆。
我认为一开始堆空间是申请好了的,当执行到new或者malloc时再向一开始的堆申请空间和写入数据。
当然堆空间可以自由扩展,但还是要先分配到缺省堆空间那边去。
new->malloc->heapalloc->virtualalloc->pagealloc

现在唯一不解的就是网上讲的mtd和mdd对堆得影响。。。。

// //