我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。 一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。 Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上 ...
分类:
系统相关 时间:
2018-02-23 17:06:05
阅读次数:
200
本文参考华庭(庄明强)的ptmalloc2 源码剖析 简介: ptmalloc实现了malloc(),free()以及一组其他函数,以提供动态内存管理,同时支持多线程。分配器处于用户空间和内核空间之间,响应用户的分配请求,向操作系统申请内存。总体思想是先“批发”一块大内存,而后“零售”给用户,同时也 ...
分类:
其他好文 时间:
2018-02-22 21:31:12
阅读次数:
287
目前为止我们学过静态内存和栈内存,分配在其中的对象由编译器自动创建和销毁, 静态内存:用来保存局部static对象、类的static数据成员、以及定义在任何函数体之外的变量。在对象使用之前分配,程序结束时销毁。 栈内存:用来保存定义在函数内的非static对象。仅在对象定义的程序块运行时存在,程序块 ...
分类:
编程语言 时间:
2018-02-20 23:57:06
阅读次数:
298
11.为须要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符。 显然,由于动态内存分配,绝对会有深浅拷贝的问题,要重写拷贝构造函数。使其为深拷贝,才干实现真正意义上的拷贝。这是我理解的关于要声明拷贝构造函数的原因。 而对于赋值操作符,类似的道理。 A b = a; b = a;对于上述两种形式, ...
分类:
编程语言 时间:
2018-02-15 17:35:03
阅读次数:
194
1、.2lf确实有四舍五入的功能,只是有浮点误差,如用2lf输出1.825和1.815前者是1.83,后者调试是1.814999999999,最终后者输出就是1.81; *100等扩大范围处理,或化为字符串处理。 例:牛客常大寒假新生赛H题 https://www.nowcoder.net/acm/ ...
分类:
其他好文 时间:
2018-02-14 12:26:18
阅读次数:
228
前言 内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市面上或是网上都充 斥着大量涉及内存管理的教材和资料。因此,我们这里所要写的Linux内存管理采取避重就轻的策略,从理论层面就不去班门弄斧,贻笑大方了。我们最想做的 和可能做到的是从开发者的角度谈谈对内存管理的理解,最终目的是把我们在内 ...
分类:
系统相关 时间:
2018-02-12 16:56:03
阅读次数:
200
1、new运算符用法 分配一个变量:P=new T; T是任意类型名,P是类型为T 的指针。动态分配出一片大小为sizeof(T)字节的内存空间,将该空间的起始地址赋值给P(new T的返回值为 T )。 e.g. 分配一个数组:P=new T[N]; T是任意类型名,P是类型为T 的指针。N是要分 ...
分类:
其他好文 时间:
2018-02-11 22:42:50
阅读次数:
186
java虚拟机内存可以分为独占区和共享区。 独占区:虚拟内存栈、本地方法栈、程序计数器。 共享区:方法区、Java堆(用来存放对象实例)。 程序计数器 比较小的内存空间,当前线程所执行的字节码的行号指示器,如果执行的为java方法,那么计数器记录的是正在执行的虚拟机字节码指令的地址,如果方法是nat ...
分类:
编程语言 时间:
2018-02-07 17:06:19
阅读次数:
175
静态内存用来保存局部的static对象和类static数据成员,以及定义在任何函数之外的变量。除了静态内存和栈内存,每个程序还有一个内存池,这部分内存被称作自由空间或堆,用来存储动态分配的对象。动态内存的管理通过new和delete运算符实现。新的标准定义了两种智能指针类型来管理动态对象,share ...
分类:
其他好文 时间:
2018-02-07 15:01:02
阅读次数:
163
JVM是根据运行时数据的存储结构来划分内存结构的,运行时数据包括java程序本身的数据信息和jvm运行java程序需要的额外数据信息。JVM运行时数据区:程序计数器:每条线程有一个独立的程序计数器,用于保存当前正常执行的程序的内存地址。堆动态内存分配。所有线程共享,在虚拟机启动时创建,可以处于物理上不连续的存储空间。此区域的唯一目的就是存放对象实例。方法区线程共享。当JVM使用类装载器装载某个类时
分类:
其他好文 时间:
2018-02-06 23:07:43
阅读次数:
203