一直搞不懂虚拟地址,求高人解答我的问题!!

2024-12-29 17:08:28
推荐回答(1个)
回答1:

4G内存是最大扩展空间,不是一个进程就分配4G内存,一个电脑进程有的上百个你哪有那么多空间用。。。
虚拟地址是进程内地址,是进程内程序运行使用的地址,它不是物理地址,所有进程的首地址都是虚拟地址0开始的,但不一定是以ffffffff,都是用多少分配多少,你不申请就没得用。。。 为啥要用虚拟内存,一个是程序运行需要,进程要申请内存,但申请的内存未必就和他连续,可能开始用的内存在物理内存前面,但你又申请的内存在物理内存的结尾,这样用物理内存就不连续了,但虚拟地址连续。。。还有一个好处是各进程用各自分配的内存,没分配给你的就没有虚拟地址,你也访问不到,防止你访问到别的进程里边。。。。这样也方便内存映射,比如一个DLL可以被多个进程访问,只要某个进程要用,只要把DLL映射到进程里,为DLL分配该进程的虚拟地址就行,不需要额外的空间,不同进程DLL的虚拟地址是不同,在物理上其实这些进程共用了这段内存,但逻辑上是在不同空间中,虚拟内存地址不同。。。。