对于 Windows 来说,每个线程的栈都是独立的,默认的栈大小是 1MB。在分配完 exe、dll、各种栈之后,Windows 的进程空间已经是支离破碎了, 当程序向系统申请一个空间的时候,只能够从这些剩下的没有被占用的地址上分配
VirtualAlloc
向系统预留一块虚拟地址
但在使用 VirtualAlloc
申请空间的时候,系统要求空间大小必须为 page 的整数倍,因此有堆管理器来专门实现节省内存的空间分配算法
HeapCreate
HeapAlloc
HeapFree
HeapDestory