您好、欢迎来到现金彩票网!
当前位置:老k棋牌 > 栈区 >

C++中的栈区堆区静态区这些是在内存的前2G部分中还是放在后2G部

发布时间:2019-07-20 00:45 来源:未知 编辑:admin

  C++中的栈区堆区静态区这些是在内存的前2G部分中还是放在后2G部分中??

  C++中的栈区堆区静态区这些是在内存的前2G部分中还是放在后2G部分中??

  4G的地址空间中,前2G是进程私有的,后2G是系统共享的,这么说,每个进程实际拥有的只有2G空间而不是4G啊?如果有两个进程呢,总共是6G还是8G?如果两个进程A和B,A访问一个地址C,假...

  4G的地址空间中,前2G是进程私有的,后2G是系统共享的,这么说,每个进程实际拥有的只有2G空间而不是4G啊?如果有两个进程呢,总共是6G还是8G?如果两个进程A和B,A访问一个地址C,假设C这个地址是后半段的共享区内的,那么B也访问地址C,这时候A和B访问的是同一个内容吗?

  我看到有这么句话 “ 系统为每个进程提供了2G的自己的虚拟地址空间,剩下的虚拟地址空间干什么用?剩下的虚拟地址空间就是给程序运行时动态分配内存使用。C++中 new的功能就是动态分配地址空间 ” 剩下的2G不是系统区不能随便访问的吗?为什么还能自己申请?

  用户程序要使用系统的API函数,而内存的后2G区是不是就是存放系统API函数具体的执行代码的?这样用户程序本身的代码其实只能用前2G的地址空间是吧,包括栈什么的还有用new自己申请的内存全都在前2G部分中

  如果AB两个进程都访问一个地址C,而C是在后2G区的,那就是说AB两个进程访问的是同一段代码是吧?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  1、实际有4G。在内核模式运行的时候会使用高地址的内存(比如你调用了某个系统API,然后进入内核了,此时就会在内核地址空间运行,运行完了返回用户模式

  2、每个进程的空间是独立的,两个的话从某种程度上说可以认为是4G。开启大地址支持的线、Windows下访问的是同一个内容,但是内核地址空间部分是不允许用户模式的代码访问的

  4、“剩下的虚拟地址空间”是指什么……4个G就分为用户空间和内核空间。动态分配也是在用户空间分配不是在内核空间分配

  是同一段代码。但是在用户模式下是无法访问C的,所以要做这样的实验会比较难

  展开全部注意,在单核CPU的中,CPU每次只能运行一个进程。所以,你说指的操作系统把4G的前面2G分配给用户程序,而后面2G操作系统使用。这4G线性空间是虚拟的,在进程切换时映射到实际的物理地址。正如你所说,每个进程拥有2G的地址空间,如果是2个进程,那么就是4G了。

http://theenigmaco.com/zhanqu/350.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有