内存与变量关系
1.在编程中声明变量时内存分配其空间,那么内存分配的空间是什么部分(是栈还是堆?)2.内存结构里除了栈,堆外还有哪些部分?(这些是物理内存空间还是虚拟内存空间?)3.假如...
1.在编程中声明变量时内存分配其空间,那么内存分配的空间是什么部分(是栈还是堆?)
2.内存结构里除了栈,堆外还有哪些部分? (这些是物理内存空间还是虚拟内存空间?)
3.假如我玩游戏的话内存分配的是那个空间(栈,堆,还是其他?)
本人是新手,尽量详细解释,谢谢~! 展开
2.内存结构里除了栈,堆外还有哪些部分? (这些是物理内存空间还是虚拟内存空间?)
3.假如我玩游戏的话内存分配的是那个空间(栈,堆,还是其他?)
本人是新手,尽量详细解释,谢谢~! 展开
1个回答
展开全部
更多追问追答
追问
1.内存是从高到低分5层:“栈区”-“堆区”-“未初始化数据区”-“已初始化数据区”-“代码区”。。这个5层是厂家设计内存条的时候分层的? 还是进入系统后系统把内存分5层的?
2. 每个层的主要作用是什么?为什么分5层啊?
3.另外每次你新开一个程序,系统都会自动赋予一个平坦的4G的“内存“空间,这是什么意思? 假如电脑内存为2G的容量怎么办?
我是新手请原谅。。。
追答
1,不是。所有的这些结构都是针对软件层面说的,或者说是一种逻辑上的理解,并不是真正内存的物理结构是这样的。你可以理解为系统需要程序有这个结构才能执行。
2,高地址主要用来声明一些变量,低地址用来包含正文程序。堆和栈起到变量交换,内存指针之类的高级功能。可以理解为除正文外的地址全部是给系统用的,系统可以标记各种变量,缓存什么的。
3,正如我前面说的一样,对程序来说,它是无法区分所在的位置是页面文件(在硬盘上)还是物理内存里。这二者对它来说是一样的。“平坦”就是这个意思。4G的意思是每个程序最大只能占用4G“内存”(32位系统下),单线程不能超过2G。也就是说,如果你的某个程序起始有1G,但是后来会增大到4G,这时假设你的物理内存只有2G,那么系统会自动在页面文件里分配2G给该程序,但是作为程序本身和运行程序的我们看来,这是一样的。区别在于你的硬盘灯狂闪……那是在分配和读写页面文件。而由于硬盘读写速度远小于物理内存,表现到我们使用者面前就是所谓的“卡顿”了
另外,对32位系统的4G限制是这么来的:每8个bits 为1 Byte,每两个Byte为一个操作,2^32= 4294967296 Byte =4GB。 如果是64位操作系统,那么是2^64= 17179869184 GB
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询