1.因为它可以用来保存任何地址段
2.堆顶的地址是被操作系统保留的吧,那么VirtualAlloc的第一个参数,如果要指定某个数值的话,我怎么知道这个数值是不是在windows允许范围内的,同时不会破坏进程的栈空间和代码空间? 我觉得这个地址参数的风险很大呀。谢谢!
2.堆顶的地址是被操作系统保留的吧,那么VirtualAlloc的第一个参数,如果要指定某个数值的话,我怎么知道这个数值是不是在windows允许范围内的,同时不会破坏进程的栈空间和代码空间? 我觉得这个地址参数的风险很大呀。谢谢!
我确实不知道堆和栈一个在顶端一个在底端,头次听说,我很怀疑这种说法的正确性,按我的理解高地址空间肯定不是ring3程序可以访问的,所以顶端说法很欠准确,其次栈也不止1个,栈有很多,谁知道哪个是底端。还有,即便你理解它们不在同一个地方,是在虚拟内存的不同地址上,那也正好说明他们是基于虚拟地址的,不是吗?不正好也就说明虚拟内存管理是比它们更底层的一个层次?
堆最终也必然用VirtualAlloc分配的,分配完成后,你才需要考虑所谓的生长方向问题,但是那也是在VirtualAlloc分配好的内存内部进行的,VirtualAlloc怎么会破坏它