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