精华内容
下载资源
问答
  • 2018-09-13 13:28:56

    一、五大内存分区

    在C++中,内存分成5个区,他们分别是 自由存储区全局/静态存储区常量存储区

    ,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。

    , 操作系统层面的术语。就是那些由malloc等分配的内存块,用free来结束自己的生命的。

    自由存储区,C++层面上的术语,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
    new的申请是调用的malloc,自由存储区就和堆类似,但不等价,可参考该文章C++ 自由存储区是否等价于堆?

    全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。

    常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改

    二、详细说明:

    1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

    2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

    3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放

    4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放

    5、程序代码区—存放函数体的二进制代码。

    三、例子程序

    这是一个前辈写的,非常详细

    //main.cpp 
    int a = 0; 全局初始化区 
    char *p1; 全局未初始化区 
    main() 
    { 
    int b; 栈 
    char s[] = "abc"; 栈 
    char *p2; 栈 
    char *p3 = "123456"; 123456\0在常量区,p3在栈上。 
    static int c =0; 全局(静态)初始化区 
    p1 = (char *)malloc(10); 
    p2 = (char *)malloc(20); 
    分配得来得10和20字节的区域就在堆区。 
    strcpy(p1, "123456"); 123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
    }  
    

    注:

    1.一般,我们说堆栈的时候,其实指的就是栈而已。所以这里说他们2个是一个意思也是对的。

    2.堆栈中的堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。

    堆分配的时候首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。

    这点和数据结构中的出堆很像,还有有一定的联系的

    3.因为"abc" 在编译的时候,编译器认为它是一个常量,把他分配到了数据区中。而char p2[]=“bbb”,是在程序运行的时候临时在栈中分配空间存放的。

    更多相关内容
  • Java虚拟机主要分为以下几个区: 方法 有时候也成为永久代,在该内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载 方法主要用来存储已被虚拟机加载的类的...

    在这里插入图片描述
    Java虚拟机主要分为以下几个区:

    方法区

    1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载
    2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据
    3. 该区域是被线程共享的
    4. 方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在这个常量池中

    虚拟机栈

    1. 虚拟机栈也就是我们平常所称的栈内存,它为java方法服务,每个方法在执行的时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出口等信息
    2. 虚拟机栈是线程私有的,它的生命周期与线程相同
    3. 局部变量表里存储的是基本数据类型、returnAddress类型(指向一条字节码指令的地址)和对象引用,这个对象引用有可能是指向对象起始地址的一个指针,也有可能是代表对象的句柄或者与对象相关联的位置;局部变量所需的内存空间在编译器间确定
    4. 操作数栈的作用主要用来存储运算结果以及运算的操作数,它不同于局部变量表通过索引来访问,而是压栈和出栈的方式
    5. 每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程中的动态连接.动态链接就是将常量池中的符号引用在运行期转化为直接引用

    本地方法栈

    本地方法栈和虚拟机栈类似,只不过本地方法栈为Native方法服务

    Java堆是所有线程所共享的一块内存,在虚拟机启动时创建,几乎所有的对象实例都在这里创建,因此该区域经常发生垃圾回收操作

    程序计数器

    内存空间小,字节码解释器工作时通过改变这个计数值可以选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理和线程恢复等功能都需要依赖这个计数器完成;该内存区域是唯一一个java虚拟机规范没有规定任何OOM情况的区域

    展开全文
  • 那么电脑能装几个内存条呢?一般来说是2个,但也有部分电脑可以装4个。接下来小编就给大家分享一下有关内容。具体如下:1、首先你要查看你的原先内存条的型号、代数。现在在内存分DDR、DDR2、DDR3的代数。如果你购买...

    我们都知道,电脑的内存条可以临时存放CPU运行数据,以及与硬盘等外部存储器交换的数据。那么电脑能装几个内存条呢?一般来说是2个,但也有部分电脑可以装4个。接下来小编就给大家分享一下有关内容。

    具体如下:

    1、首先你要查看你的原先内存条的型号、代数。现在在内存分DDR、DDR2、DDR3的代数。如果你购买的内存代数和原先的内存代数不符合匹配的话,那么安装笔记本主板上也是没有用的。当然在这里我们可以通过游戏软件来检测你的笔记本内存的型号和代数。

    1e67b5ebf5e233935b52075916192b83.png

    2、虑到了内存代数之后,其次还必须在购买内存的时候必须和原先笔记本内存频率相同。内存频率不同的话,即使笔记本已经成功检测到内存,但是也会出现死机、蓝屏的现象。这样对笔记本的兼容性就不是很好了。所以我们在购买内存条的时候这也是需要考虑的因素。

    当然如果你购买内存条之后可以对笔记本主板采取自动降频的方法来提高兼容性,当然这种方法是可以的。但是也是会出现一些未知的故障。

    9c4ecf6edd127bf6847a8a2d2d635667.png

    3、最后的话,就是在购买内存条的时候要注重品牌了。因为有网友反应过因为品牌不同而导致安装内存条出现开机不起的情况。但是如果前面两个条件符合的话,基本上是能正常使用内存了。但是如果是同品牌的内存条的话,那就再好不过了。

    499787d13cf510f8a4736200d917a9bb.png

    以上就是电脑能装几个内存条的注意事项,有需要的朋友可以通过上面的步骤进行了解,希望可以帮到您。

    展开全文
  • 大家在使用电脑一段时间之后,随着下载的软件和游戏越来越多,就会导致内存不够用,许多用户就会选择加装内存条来增加内存,但是不知道笔记本电脑可以装几个内存条,带着大家的这个疑问,本文给大家说说笔记本电脑...

    大家在使用电脑一段时间之后,随着下载的软件和游戏越来越多,就会导致内存不够用,许多用户就会选择加装内存条来增加内存,但是不知道笔记本电脑可以装几个内存条,带着大家的这个疑问,本文给大家说说笔记本电脑最多可以插多少条内存吧。

    具体如下:

    1、一般笔记本可以装2个内存条,极少部分可以装4个内存条,而且还要确定笔记本主机里的内存插槽的型号与内存的型号是否对得上,如果不懂型号直接查看插槽和内存的缺口的位置就知道了。

    b51df9a61df03fb2ac036631a102009c.png

    2、对着电脑桌面的任务栏图标击右键,选择“任务管理器”(这个方法只有win8系统,win10系统才有)。

    00ac65b4c7e4ae63705aecd626041b7c.png

    3、打开任务管理器之后,点击“性能”页面,将任务管理器的状态显示页面切换到硬件的性能指标显示页面。

    e889fd043668b59df39a0089675683f5.png

    4、接下来,点击“内存”,然后我们就能看到内存条的运行状态。

    f544ac8aab41779d41be8a7b2d059bed.png

    5、如下图所示,查看如图所示的位置,然后我们就能看到清晰地显示出了。

    81cebea2c58824a25fe5f3b8bb5ebb7b.png

    上述给大家讲解的就是笔记本电脑可以装几个内存条的详细步骤,有需要的用户们可以按照上面的方法步骤来进行操作吧,希望可以帮助到大家。

    我要分享到:

    展开全文
  • 如何不拆开笔记本后盖的情况下电脑查看有几个内存条插槽。 1、打开“任务管理器”,选择“性能”,点击“内存”,看到右下角“已使用的插槽” 2、鼠标移上去,内存条有详细信息 ...
  • 创建共享内存分以下几个步骤

    千次阅读 2017-08-23 11:16:03
    创建共享内存分以下几个步骤:  1.定义共享内存的结构体;  2.利用CreateFileMapping函数创建共享内存;  3.定义指向共享内存结构体的指针pShareMem,利用MapViewOfFile函数将刚刚创建的内存映射到定义...
  • 「每日一问」Java虚拟机内存分为哪几个区域?

    万次阅读 多人点赞 2020-07-02 10:15:13
    方法 方法(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 参考答案 程序计数器、虚拟机栈、本地方法栈、堆、方法...
  • 1:一命令,轻松查看电脑支持多大内存 使用 Win + R组合快捷键,打开 运行 操作框,然后在打开后面 输入命令 cmd ,并点击下方的“确定”进入命令操作窗口,如下图所示。 然后在打开的CMD命令窗口输入命令: ...
  • 第一问题:内存条怎么看?查看电脑内存其实方法很多也非常简单,相信大家一次看一遍就能学会了!第一种方法:我们只需要鼠标右键点“计算机”图标,选择--属性 选项中就可以看到电脑内存信息了。如下图:我们可以...
  • 怎么查看电脑可以插多少内存

    千次阅读 2021-07-31 01:27:52
    笔记本一般都有配带多一个内存条的位置,那如何查看自己电脑可以插几个内存条呢?下面是学习啦小编为大家介绍电脑可以插多少内存条的查看方法,欢迎大家阅读。电脑可以插多少内存条的查看方法了解自己电脑内存槽数量最...
  • 4G内存条和2G内存条是可以同时装到一块主板正常使用的,但是这有几个前提条件:一是这两条内存必须同属同一类型,也就是说都是DDR4内存或都是DDR3内存,当然也必须都是台式机内存或笔记本电脑内存才行,否则别说使用...
  • 原标题:内存检测就这么简单,学会这几个软件就可以了升级内存条应该是整个DIY过程中最简单易上手的,为什么会这么说呢?如果机械硬盘换SSD,升级系统可能会难倒一片,当然这些对于我这个老司机来说都是小CASE。今天...
  • 查询内存是DDR的方法 1.运行cmd 2.输入wmic回车 3.输入memorychip回车 4.往右拉找到Speed Status 下面的数字,如果是 133-266就是属DDR 400-800就是DDR2 1066-1600就是DDR3 1866-3200就是DDR4
  • 不拆机看电脑有几个内存条的方法是查看任务管理器中性能:这里会显示出内存几个插槽
  • 查看电脑插入内存条的命令

    千次阅读 2018-12-26 09:33:19
    查看电脑插入内存条的命令wmic memorychip get
  • greenplum的几个内存配置

    千次阅读 2017-12-06 11:05:50
    设置每查询最大使用的内存量,该参数是防止statement_mem参数设置的内存过大导致的内存溢出statement_mem 设置每查询在segment主机中可用的内存,该参数设置的值不能超过max_statement_mem设置的值,如果配置了...
  • 用CPU-Z查看内存插槽数与频率

    千次阅读 2021-06-25 08:19:40
        CPU-Z是一个非常方便查看...图(1) 有几个#号,就有几个内存插槽     在插槽#1上的内存条,其类型为DDR4,大小为8GB,频率1200MHz,厂家为SK Hynix(海士力),生产日期 2017年第52周(就是2017年12月) 图
  • 主板手册中有这样一句话:说明为便于理解,首先对内存插槽编号,从靠近CPU插槽的位置开始:主板针对不同情况的最佳安装顺序:内存安装建议如果第二插槽中安装了一,对于2根,将它们安装在第二和第四插槽中,...
  • free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲等。 语法: free [-bkmotV][-s <间隔秒数>] 参数: -b 以Byte为单位显示内存使用情况...
  • C语言中常用的几个内存申请函数

    万次阅读 2017-03-27 00:03:53
    C语言中常用的几个内存申请函数:void* malloc(unsigned size); void* realloc(void* ptr, unsigned newsize); void* calloc(size_t numElements, size_t sizeOfElement);以上函数都在头文件stdlib.h中定义,因此...
  • 关于jvm几个关键内存配置参数

    万次阅读 2016-08-15 12:21:02
    请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior总大小分别是: a.... 首先必须知道几个参数的含义:-Xmx :堆的最大值 -
  • 例子:地址0000A000H 到 0000BFFFH 共有多少存储单元:16进制中转成10进制: A-10 B-11 C-12 D-13 E-14 F-15 0-0 1-1则 0000BFFFH 即 BFFF的 为 B*16^3+F*16^2+F*16^1+F*16^0 =11*16^3+15*16^2+15*16+15*1=...
  • 2.结构体中字符型(char)数组在分配内存时会多分配3字节 示例及运行结果如下 #include <stdio.h> #include <stdlib.h> struct student { long no; char sex; char name[20]; int age; float score...
  • 内存泄露:内存泄漏指由于疏忽或错误造成程序不能释放或不能及时释放已经不再使用的内存的情况,是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存不能回收和不能及时回收,最后可能...
  • 文章目录windows如何查看内存条型号信息cpu型号信息包括 内存数 和 cpu数前言一、查看内存条型号信息和数二、查看cup型号 信息 数总结 其他的小知识 前言 不说那么多废话 很多人网上查 关于windows如何...
  • 如果你使用的是华为手机,一定要关闭这几个设置,否则时间长了,内存即使再大也不够用。 1、常见功能:微信自动下载关闭 微信自动下载的这几个设置,其实很多人都知道,但为了以防万一,还是要给大家说一下。和其他...
  • 怎么查内存条型号 这步你要了解

    千次阅读 2021-07-31 04:19:43
    很多朋友想要升级下自己电脑的内存,但是升级内存条以前,首先需要查看下电脑内存条的型号,因为内存条经历了好代的发展,从早期的SDR、DDR到DDR2、DDR3,工作的频率以及接口都是不一样的,所以你随便买一个内存条...
  • Java内存区域介绍(附带JDK1.8后方法的变化)

    千次阅读 多人点赞 2019-07-13 13:51:23
    一、运行时数据区域 Java虚拟机在执行Java程序的过程...根据《Java虚拟机规范(JavaSE7版)》的规定,java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示 程序计数器(Program Counter Register) ...
  • 全面理解Java内存模型(JMM)及volatile关键字

    万次阅读 多人点赞 2017-06-12 11:25:05
    Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有的用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分代表的是每个线程的私有数据区域。 方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,914,006
精华内容 765,602
关键字:

内存分几个区