`
- 浏览:
16028650 次
- 性别:
- 来自:
济南
-
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。
一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。
从低地址到高地址,可分为下面几段:
预留内存地址(操作系统维护的内存地址,不可访问)
程序代码区(只读,存代码和一些其他的东西);
data段(存初始化的全局变量和static变量,另外还有文字常量区,常量字符串就是放在这里,程序结束后有系统释放);
bss段(存未初始化的全局变量和static变量);
堆(由低地址向高地址增长,一般new和malloc分配,由程序员分配释放);
共享库文件(调用的库文件,位于堆和栈之间);
栈(由高地址向低地址增长,和堆的增长方式相对,对不同的OS来说,栈的初始大小有规定,可以修改,目前默认一般为2M,由编译器自动分配释放);
再上面存的都是操作系统和内核调用的一些内存地址。
如图所示:
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
数据在内存中的存储形式,和对内存的分区结构,全局数据,程序区,堆,栈
NULL 博文链接:https://jacky-dai.iteye.com/blog/2307500
作为一个程序员,弄清楚程序在内存中怎么放得是多么重要。有我的实验代码和我总结画得c程序分布图。有linux的,有windows的。经过gcc for linux,dev++ for windows,vc for windows
例解C程序的内存分布; 对初学者很有帮助。
C++程序内存分布
用图形说明内存分布,讲解程序如何在内存中存储。用程序生动说明变量、函数等在内存中的分布。
通过程序设计语言了解下自己的机子,挺好的,尤其是C程序运行时内存分布,奉献给那些对内存还不是很清楚的入门程序员,内容是网络上搜的,挺详细,希望对大家有帮助
关于可执行程序elf的架构和虚拟内存分布的说明: 可执行程序elf具体包括如下:(1).bss,未初始化的静态变量;(2).data,已经初始化的静态变量(static修饰,全局变量);(3).rodata,只读段落;(4).text,...
对android应用开发的总结,GC内存回收的原来和算法,JVM内存管理的方式
java 生成对象的时候以及调用方法的时候,所使用的空间分布,包括对象和变量在内存的存储方式和分布方式的讲解。
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等...
java基础——创建对象与内存分布(csdn)————程序
用C#模拟操作系统中的内存分布
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 2、堆区(heap) ...
内存的分布,如何在写程序时更好的管理内存
显然代码存放在代码区,而程序的数据则根据数据种类的不同放在不同的存储区中,在C/C++中,数据主要有几种不同的分类:常量和变量、全局数据和局部数据,静态数据与非静态数据,以及程序运行中产生和释放的动态...
进程虚拟内存查看器是一个可以查看任何进程地址空间信息的工具,其中包括: 1、系统全局的内存状态 总页面大小 ...4、指定进程的虚拟内存分布图 5、指定进程的所有堆信息 6、指定进程的所有加载模块信息
C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象。 先写一个测试程序: #include #include int g_i = 100; ...
在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第 0 条-第 9 条指令为第0页(对应逻辑地址为[0,9]) 第10条-第19条指令为第1页(对应逻辑地址为[10,19]) ……………………...
实验题目 设计和实现关于内存管理的内存布局初始化及内存申请分配、内存回收等基本功能...该算法能使内存中的空闲区分布得较均匀。比较次数少于最佳适应算法(Best Fit),内存利用率低于最佳适应算法(Best Fit)。