首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VirtualAlloc失去的内存块,会不会被heap或者stack覆盖掉

2012-08-07 
VirtualAlloc得到的内存块,会不会被heap或者stack覆盖掉?x86体系结构的虚拟内存空间从低到高是这样排列的。

VirtualAlloc得到的内存块,会不会被heap或者stack覆盖掉?
x86体系结构的虚拟内存空间从低到高是这样排列的。

---------------------------------------------
| .text | .data | heap....| other region for VirtualAlloc | stack |
---------------------------------------------

我的问题是,既然VirtualAlloc是在中间拿掉了一段内存空间,那么如果进程使用了大量的堆内存,那么随着堆的增长,这个堆会不会覆盖掉VirtualAlloc申请的地址段?

windows平台下堆内存管理最后是调用HeapAlloc,他调用ntdll.dll里面的内存管理函数,并非通过VirtualAlloc来调用的。会发生冲突吗?

[解决办法]
不会,LZ为什么会担心这种问题?

HeapAlloc和VirtualAlloc都会调用ntdll.NtAllocateVirtualMemory

进程内存空间分布应是这样
|保留段|PE区段(.text、.data、.rsrc等)|堆|内存映射段(如文件映射)|栈|内核保留段|

堆栈等只是虚拟内存的一部分

热点排行