VC++内存虚拟地址空间

Windows使用一组固定的范围来分割进程的4GB虚拟地址空间,因此有时可以通过查看指针的返回值来判断指针是否有效。

Windows 2000虚拟地址空间的划分:

虚拟地址空间 大小范围 作用
0x00000000~0x0000FFFF 64KB 不能用来检测空指针赋值(访问冲突)
0x00010000~0x7FFEFFFF 64KB~2GB-64KB Win32进程私有(非保留),用于程序和数据
0x7FFF0000~0x7FFFFFFF 2GB-64KB~2GB 不能用来防止覆盖OS分区(访问冲突)
0x80000000~0xFFFFFFFF 2GB~4GB 为操作系统保留,不可访问(访问冲突)

 

Windows2000虚拟地址空间具体使用:

0x00030000~0x0012FFFF 线程栈
0x00130000~0x003FFFFF 堆(有时堆位于此处)
0x00400000~0x005FFFFF 可执行代码
0x00600000~0x0FFFFFFF 堆(有时堆位于此处)
0x10000000~0x5FFFFFFF App DLLs、Msvcrt.dll、Mfc42.dll
0x77000000~0xFFFFFFFF Apvapi32.dll、Comctl32.dll、Gdi32.dll、Kernel32.dll、Ntdll.dll、Shell32.dll、User32.dll

http://jingyan.baidu.com/article/425e69e68a0df4be15fc1615.html

 

全面介绍Windows内存管理机制及C++内存分配实例(一):进程空间

内存分布:

http://blog.csdn.net/sunmenggmail/article/details/7569561?reload

posted @ 2013-04-07 20:19  winko  阅读(301)  评论(0编辑  收藏  举报