内存类型

C语言-怎么找115资源

眉间皱痕 提交于 2020-03-04 22:21:54
C 语言的起源与发展 C 语言的开发 Dennis M. Ritchie Bell Labs/Lucent Technologies Murray Hill, NJ 07974 USA 摘要 C 编程语言是在 1970 年代早期作为初创的 Unix 操作系统的系统实现语言而设计的。起源于无类型的 BCPL 语言,它发展出了类型结构;它建立在一个小机器上、作为改善其贫乏的编程环境的工具,它现在已经成为占主导地位的语言之一。本文研讨它的演变。   注意: *Copyright 1993 Association for Computing Machinery, Inc. This electronic reprint made available by the author as a courtesy. For further publication rights contact ACM or the author. This article was presented at Second History of Programming Languages conference, Cambridge, Mass., April, 1993. It was then collected in the conference proceedings: History of Programming

malloc

半世苍凉 提交于 2020-03-04 08:16:13
malloc函数是一种分配长度为num_bytes字节的内存块的函数,可以向系统申请分配指定size个字节的内存空间。中文为动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。 malloc函数原型 extern void *malloc(unsigned int num_bytes); malloc函数头文件 #include <stdlib.h> 或 #include <malloc.h> malloc函数函数声明 void *malloc(size_t size); void* 表示未确定类型的指针,void *可以指向任何类型的数据,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据。 malloc函数返回值 如果分配 成功 则返回 指向被分配内存的指针 (此存储区中的初始值不确定), 失败 返回 空指针NULL 。当内存不再使用时,应使用 free()函数 将内存块释放。 malloc函数与new的区别 从本质上来说: malloc ( Linux上具体实现可以参考man malloc,glibc通过brk()&mmap()实现 )是libc里面实现的 一个函数 。 如果在source code中没有直接或者间接include<stdlib.h>,那么gcc就会报出error:‘malloc’ was not

16变量进阶(理解)

旧巷老猫 提交于 2020-02-29 09:58:07
01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址 ,就叫做 引用 使用 id() 函数可以查看变量中保存数据所在的 内存地址 注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用 变量 不再 对之前的数据引用 变量 改为 对新赋值的数据引用 1.2 变量引用 的示例 在 Python 中,变量的名字类似于 便签纸 贴在 数据 上 定义一个整数变量 a ,并且赋值为 1 代码 图示 a = 1 将变量 a 赋值为 2 代码 图示 a = 2 定义一个整数变量 b ,并且将变量 a 的值赋值给 b 代码 图示 b = a 变量 b 是第 2 个贴在数字 2 上的标签 1.3 函数的参数和返回值的传递 在 Python 中,函数的 实参 / 返回值 都是是靠 引用 来传递来的 def test ( num ) : print ( "-" * 50 ) print ( "%d 在函数内的内存地址是 %x" % ( num , id ( num ) ) ) result = 100 print ( "返回值 %d

C语言 存储类型

折月煮酒 提交于 2020-02-28 20:22:33
C语言 存储类型 类型 作用域 生命周期 存储位置 auto变量 一对{}内 当前函数 栈区 static局部变量 一对{}内 整个程序运行期 初始化在data段,未初始化在BSS段 extern变量 整个程序 整个程序运行期 初始化在data段,未初始化在BSS段 static全局变量 当前文件 整个程序运行期 初始化在data段,未初始化在BSS段 extern函数 整个程序 整个程序运行期 代码区 static函数 当前文件 整个程序运行期 代码区 register变量 一对{}内 当前函数 运行时存储在CPU寄存器 字符串常量 当前文件 整个程序运行期 data段 内存分区 一、内存分区说明 代码区(text segment) 加载的是可执行文件代码段,所有的可执行代码都加载到代码区,这块内存是不可以在运行期间修改的。 未初始化数据区(BSS) 加载的是可执行文件BSS段,位置可以分开亦可以紧靠数据段,存储于数据段的数据(全局未初始化,静态未初始化数据)的生存周期为整个程序运行过程。 全局初始化数据区/静态数据区(data segment) 加载的是可执行文件数据段,存储于数据段(全局初始化,静态初始化数据,文字常量(只读))的数据的生存周期为整个程序运行过程。 栈区(stack) 栈是一种先进后出的内存结构,由编译器自动分配释放,存放函数的参数值、返回值、局部变量等

PHP垃圾回收深入理解

心已入冬 提交于 2020-02-27 09:51:31
PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完全兼容。PHP5.3在PHP5.2的基础上做了诸多改进,其中垃圾回收算法就属于一个比较大的改变。本文将分别讨论PHP5.2和PHP5.3的垃圾回收机制,并讨论这种演化和改进对于程序员编写PHP的影响以及要注意的问题。 PHP变量及关联内存对象的内部表示 垃圾回收说到底是对变量及其所关联内存对象的操作,所以在讨论PHP的垃圾回收机制之前,先简要介绍PHP中变量及其内存对象的内部表示(其C源代码中的表示)。 PHP官方文档中将PHP中的变量划分为两类:标量类型和复杂类型。标量类型包括布尔型、整型、浮点型和字符串;复杂类型包括数组、对象和资源;还有一个NULL比较特殊,它不划分为任何类型,而是单独成为一类。 所有这些类型,在PHP内部统一用一个叫做zval的结构表示,在PHP源代码中这个结构名称为“_zval_struct”。zval的具体定义在PHP源代码的“Zend/zend.h”文件中

Java代码常见优化方案

北城以北 提交于 2020-02-26 07:41:39
Java代码常见优化方案 首先,良好的编码规范非常重要。在 java 程序中,访问速度、资源紧张等问题的大部分原因,都是代码不规范造成的。 单例的使用场景 单例模式对于减少资源占用、提高访问速度等方面有很多好处,但并不是所有场景都适用于单例。 简单来说,单例主要适用于以下三个方面: 多线程场景,通过线程同步来控制资源的并发访问。 多线程场景,控制数据共享,让多个不相关的进程或线程之间实现通信(通过访问同一资源来控制)。 控制实例的产生,单例只实例化一次,以达到节约资源的目的; 不可随意使用静态变量 当某个对象被定义为 static 变量,那么 GC 通常是不会回收这个对象所占有的内存。 示例如下: public class A { private static B b = new B(); } 此时静态变量 b 的生命周期与 A 类同步,即如果 A 类不卸载,b 对象会常驻内存,直到程序终止。 创建 Java 对象使用注意事项 根据业务使用场景,尽量避免在循环中 new 对象。 这是因为系统要花费时间来创建对象,而且还要花时间对这些对象进行管理和垃圾回收。所以在可以控制的范围内,尽量保证最大限度地重用对象,最好能用基本的数据类型或数组来替代对象。 final 修饰符使用注意事项 final 修饰符的类是不可派生的,即不可被继承。在 java 核心代码中,有很多 被 final

Java代码常见优化方案

烈酒焚心 提交于 2020-02-26 01:56:17
Java代码常见优化方案 首先,良好的编码规范非常重要。在 java 程序中,访问速度、资源紧张等问题的大部分原因,都是代码不规范造成的。 单例的使用场景 单例模式对于减少资源占用、提高访问速度等方面有很多好处,但并不是所有场景都适用于单例。 简单来说,单例主要适用于以下三个方面: 多线程场景,通过线程同步来控制资源的并发访问。 多线程场景,控制数据共享,让多个不相关的进程或线程之间实现通信(通过访问同一资源来控制)。 控制实例的产生,单例只实例化一次,以达到节约资源的目的; 不可随意使用静态变量 当某个对象被定义为 static 变量,那么 GC 通常是不会回收这个对象所占有的内存。 示例如下: public class A { private static B b = new B(); } 此时静态变量 b 的生命周期与 A 类同步,即如果 A 类不卸载,b 对象会常驻内存,直到程序终止。 创建 Java 对象使用注意事项 根据业务使用场景,尽量避免在循环中 new 对象。 这是因为系统要花费时间来创建对象,而且还要花时间对这些对象进行管理和垃圾回收。所以在可以控制的范围内,尽量保证最大限度地重用对象,最好能用基本的数据类型或数组来替代对象。 final 修饰符使用注意事项 final 修饰符的类是不可派生的,即不可被继承。在 java 核心代码中,有很多 被 final

Java基础学习之路-笔记day11

心不动则不痛 提交于 2020-02-25 21:23:18
JavaSe-day11-类和对象 类和对象概念 生活中所有的内容和事物,都可以用一个名词概括:东西 在Java中,所有的内容和事物,也都可以用一个名词概括:对象。 概念对比 生活中 Java中 类别/种类 类 - class 个体(具体的某个个体) 对象 - Object 属性:有什么参数 成员变量 行为:能干什么 成员方法 1、 类和对象的关系 生活中:类别和个体的关系 类别是个体的抽象 //界门纲目科属种 个体是类别的真实一个存在 Java中:类和对象的关系 类是对象的抽象 对象是类的实例 类 : 具有相同属性和行为的一类事物的集合/抽象 ,封装的是这类事务共有的属性和行为。 对象:类下面真实存在的很具体的一个个体 对象的点在于 非常非常具体 的一个个体 类是对事物类别的一种描述,对象则为具体存在的某一个事物 对象属于某个类,一个类可以有多个具体的对象 Java中,类是对象的数据类型 eg: int a =1 人 moumou =张三 Student s = new Student(); 万物皆对象 面向对象 面向对象是一种思想,一种解决问题的思路,源于生活 面向过程 :只关注解决问题的过程,而不关注多个解决方法之间的关系等 面向过程:关注的是解决问题的具体思路,相当于基层员工 做法: 求和 1. 获取两个数 2. 把两个数相加 ..... n. 拿到计算结果 面向对象

Redis 之持久化

♀尐吖头ヾ 提交于 2020-02-24 14:27:29
目录 一.前言 二.持久化类型之 RDB 三.持节化类型之AOF 四.Redis 持久化类型的抉择 五.持久化的恢复 六.持久化问题的分析定位与优化 七.回顾总结 一.前言 首先,来回顾下前面文章的知识.Redis的特性之一就是读取速度快,因为它的数据是存储在内存中的,但是这样还有它的不足之处,那就是当你服务器断电时或者进程产生进退后,那么你所存储在内存中的数据也就荡然无存了,可是这样会给我们带来丢失数据的危险.而Redis正是考虑到了这一点,所以便有了持久化的功能.而持久化的作用正像它的名称一样,便是为了保持数据的持久. Redis的持久化类型有两种,一种是全量(RDB),一种是增量(AOF),今天这篇文章中便来聊聊这两种类型的特性和他们的优缺点,以及我们在这两种类型中如何做选择. 二.持久化类型之 RDB 1.什么事RDB? RDB是把Redis中的完整的数据生成一个快照,然后保存到硬盘当中,那么这就是一个RDB文件了,不过这个RDB文件是一个二进制的文件.当你的Redis服务重启时,它会去载入这样的RDB文件.其作用便是为了备份数据和恢复数据,当然它也是一个复制的媒介,对于Redis的主从复制正式利用这个文件来完成的. 2.触发机制 RDB的触发方式有两种,分别是:save(同步)和bgsave(异步).因为save的触发方式是同步的,那么它会阻塞当前的Redis服务器

Java代码常见优化方案

吃可爱长大的小学妹 提交于 2020-02-23 03:42:30
Java代码常见优化方案 首先,良好的编码规范非常重要。在 java 程序中,访问速度、资源紧张等问题的大部分原因,都是代码不规范造成的。 单例的使用场景 单例模式对于减少资源占用、提高访问速度等方面有很多好处,但并不是所有场景都适用于单例。 简单来说,单例主要适用于以下三个方面: 多线程场景,通过线程同步来控制资源的并发访问。 多线程场景,控制数据共享,让多个不相关的进程或线程之间实现通信(通过访问同一资源来控制)。 控制实例的产生,单例只实例化一次,以达到节约资源的目的; 不可随意使用静态变量 当某个对象被定义为 static 变量,那么 GC 通常是不会回收这个对象所占有的内存。 示例如下: public class A { private static B b = new B(); } 此时静态变量 b 的生命周期与 A 类同步,即如果 A 类不卸载,b 对象会常驻内存,直到程序终止。 创建 Java 对象使用注意事项 根据业务使用场景,尽量避免在循环中 new 对象。 这是因为系统要花费时间来创建对象,而且还要花时间对这些对象进行管理和垃圾回收。所以在可以控制的范围内,尽量保证最大限度地重用对象,最好能用基本的数据类型或数组来替代对象。 final 修饰符使用注意事项 final 修饰符的类是不可派生的,即不可被继承。在 java 核心代码中,有很多 被 final