看进程空间
每个进程都有自己的虚拟空间(win32程序中每个进程拥有4GB的虚拟地址空间,每个进程都有各自编址,同一个数据块在不同进程编址可能不一样,这存在调度问题:)
虚拟空间被分为好几个区:空指针赋值区、用户模式区、64k禁入区(为了分开内核和用户的边界区)、内核模式区
分配的空间大小事分配粒度的倍数。
涉及给分区调拨物理存储器,映射虚拟内存到物理内存######来说下堆
用户模式区装载exe、dll等数据。程序开始开辟进程,进程开辟堆空间。也就是默认1mb的缺省堆。
我认为一开始堆空间是申请好了的,当执行到new或者malloc时再向一开始的堆申请空间和写入数据。
当然堆空间可以自由扩展,但还是要先分配到缺省堆空间那边去。
new->malloc->heapalloc->virtualalloc->pagealloc
现在唯一不解的就是网上讲的mtd和mdd对堆得影响。。。。