首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sizeof()等价于引用类型?

在计算机编程中,sizeof()操作符用于获取一个数据类型或对象所占用的内存字节数。sizeof()操作符不适用于引用类型,因为引用类型本质上是指向另一个对象的指针,它并不直接占用内存空间。

例如,在C++中,sizeof(int)将返回4,因为int类型通常占用4个字节的内存空间。但是,如果定义了一个引用类型,如:

代码语言:txt
复制
int& ref = x;

sizeof(ref)将返回4(在32位系统上)或8(在64位系统上),因为引用本质上是一个指针,它占用的内存空间与指针大小相同。

总之,sizeof()操作符不适用于引用类型,因为引用类型本质上是指向另一个对象的指针,它并不直接占用内存空间。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++ 自由存储区是否等价堆?

但程序员也可以通过重载操作符,改用其他内存来实现自由存储,例如全局变量做的对象池,这时自由存储区就区别堆了。...堆与自由存储区并不等价。 问题的来源 再回过头来来看看这个问题的起源在哪里。最先我们使用C语言的时候,并没有这样的争议,很明确地知道malloc/free是在堆上进行内存操作。...直到我们在Bjarne Stroustrup的书籍中数次看到free store (自由存储区),说实话,我一直把自由存储区等价堆。...关于自由存储区与堆是否等价的问题讨论,大概就是从这里开始的: Free Store The free store is one of the two dynamic memory areas, allocated...堆与自由存储区还是有区别的,它们并非等价

3.4K70

引用类型

在JavaScript中引用类型是一种数据结构,将数据和功能组织在一起,或者也称之为类,但是在ECMAScript并不真正具有类,所以我们都把引用类型称之为对象,对象是最常见的引用类型实例,然后对象上面有属性和方法..., 最常见的对象是Object类型引用类型实例。...name: 'wade' }; 访问对象属性有两种方法: console.log(user.name); console.log(user['name']); 其实JavaScript自带的引用类型有很多...还有,像Number、String、Boolean等也属于引用类型,我们都把这些称之为对象。...今天我们了解一下什么是引用类型,构造函数和对象字面量的两种概念,之后会慢慢详细说一些Array、Date等一些比较重要的引用类型概念。 (完)

39220
  • 【C++ 语言】引用数据类型 ( 引用数据类型定义 | 引用数据类型使用 | 引用类型参数 )

    文章目录 引用类型 引用类型 引用数据类型 : 1....引用数据类型定义 : 类型名称& 变量名 = 对应类型变量名称 ; //① 定义 普通 类型 变量 int a = 8; //② 定义 引用类型变量, 格式 : 类型名称& 变量名 = 对应类型变量名称...修改引用类型变量值 , 引用类型做参数 , 修改引用值 void quote(int& b) { //修改引用类型变量值 b = 888; } // 2....b = a; //③ 调用函数传入引用类型参数 : 将引用类型传给接收引用类型的方法 quote(b); //④ 打印引用数据类型的修改结果 , 结果是 b 被修改成了 888 cout <<...b << endl; //引用数据类型定义与使用 : // ① 引用数据类型定义 : 类型名称& 变量名 = 对应类型变量名称 ; // ② 引用数据类型的使用方法 : 直接当做原来的变量使用即可

    67520

    java 引用类型

    我刚接触java、对于引用的认识。就是 Student stu=new Student();stu就是那个引用,至于这个stu是个什么样的引用,就不太清楚了。...java 中对象的引用类型分为四种:强引用、弱引用、弱引用、虚引用引用(StrongReference) 就是我们平时最常用的,Student stu=new Student();这里的引用就是个强引用...只要一个对象还有强引用持有、那么他就永远不会被回收。 软引用(SoftReference) 软引用,比起强引用稍弱一些,当发现内存要不足的时候,软引用的对象是可以被释放的。...它的作用是引用一个对象,但是并不阻止该对象被回收。如果使用一个强引用的话,只要该引用存在,那么被引用的对象是不能被回收的。弱引用则没有这个问题。...这种引用,讲真,我没用到过,顺道了解到的而已。据说在一些较为精准的场景下会进行使用。不过可能导致,对象回收的效率下降,据说…… 这就是java 引用的基本类型了。

    93010

    javaScript 引用类型

    Object类型   创建Object 实例的属性有两种方式。     1.使用new 操作符后跟Object 构造函数。  ...    console.log(obj.name);     console.log(obj["name"]);     obj.say();     obj["say"]();    每个Object类型的实例共有的属性和方法...var obj = {name:“张三”,age:"18"};       console.log(obj.valueOf() === obj);// true Array 类型     数组是一种类列表对象...wallet.money         },0)       filter 方法:(不改变原数组) filter 为数组中的每一个元素调用一次callback 函数,并利用给所有使得callback 返回true 或 等价...var arr = ["George","John","Thomas"];       console.log(arr.valueOf()) Date 类型     Date 对象的语法

    1.1K40

    Java引用类型:强引用,软引用,弱引用,虚引用

    在Java中提供了4个级别的引用:强引用,软引用,弱引用,虚引用。在这4个引用级别中,只有强引用FinalReference类是包内可见,其他3中引用类型均为public,可以在应用程序中直接使用。...软引用引用是除强引用外,最强的引用类型。...此外,没有任何约束保证软引用将在某个特定的时间点被清除,或者确定一组不同的软引用对象被清除的顺序。不过,虚拟机的具体实现会倾向不清除最近创建或最近使用过的软引用。...弱引用引用时一种比软引用较弱的引用类型。...一旦一个弱引用对象被垃圾收集器回收,便会加入导一个注册引用队列中 虚引用引用时所有引用类型中最弱的一个,一个持有弱引用的对象,和没有引用几乎是一样的,随时都可能被垃圾回收器回收。

    2.2K31

    Java引用类型

    Java当中的数据类型: 1.基本数据类型 2.引用数据类型: 类 String 数组 抽象类 接口 枚举 .........数据类型的取值范围就是-2^(比特位数-1)---2 ^(比特位数-1)-1 字符串类型变量(String) public class TestDemo{ public static void main...,提示将 long 转成 int 会丢失精度 long d = a + b; // 编译通过 char short 与int 提升 当一个类型(char byte)小于4个字节的时候,就会自动提升为...隐式类型转换: 把一个小类型自动转换为大类型 显示类型转换: 把一个大类型转换为一个小类型,需要强制类型转换 public class TestDemo{ public static void main...是强类型语言),所以要进行类型强转,而将int放到 long里面就可以 注意:boolean类型是不能强转为int 的 int与String的相互转化 int --->String int num =

    58710

    【小家java】引用类型(强引用、软引用、弱引用、虚引用

    1、概述 本文不论述java中值传递和引用传递之间的问题(有需求的可移步理解java中值传递和引用传递),而重点讨论Java中提供了4个级别的引用:强应用、软引用、弱引用和虚引用。...重点是:它是非public的类哦,因此我们并不能在外部调用此构造函数来create一个强引用呢。这得益JVM的设计,各位看官可以想想为什么呢?...如果弱引用引用的对象被JVM回收,这个弱引用就会被加入到与之关联的引用队列中 虚引用(关注使用场景) 虚引用(PhantomReference):虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期...java.lang.OutOfMemoryError: Java heap space System.out.println("map.size->" + map.size()); } 上面使用了强引用类型...所以这个时候为了节约内存,其实是可以把entry一起移除掉的,这里不做演示了,同学们可以自行试验 4、最后 咱们最常用的肯定是强引用,但是java提供的另外几种引用类型也是很有必要了解的,在特殊的场合也非常好用

    2.1K40

    java学习引用类型之虚引用

    引用(Phantom Reference)是Java中最弱的一种引用类型,它在Java.lang.ref包中定义。...与弱引用和软引用不同,虚引用主要用于跟踪对象被垃圾回收器回收的活动,并不能通过虚引用获取到对象的实例。虚引用的特点如下:获取对象:无法通过虚引用直接获取到被引用的对象实例。...通过虚引用调用get()方法始终返回null。生命周期控制:虚引用主要用于在对象被垃圾回收时接收一个系统通知。在创建虚引用时,需要将其与一个引用队列(ReferenceQueue)关联。...当对象被垃圾回收器回收时,会将该虚引用添加到关联的引用队列中,通过监视该引用队列可以得知对象已经被回收。...当垃圾回收器准备回收一个对象时,如果发现它的虚引用已经添加到引用队列中,那么会将虚引用放入引用队列,并通过监视该引用队列判断对象是否已被回收。

    49730

    《基本类型引用类型

    《基本类型引用类型》 这里再给大家普及一个概念,在 Java 中「基本类型引用类型」的区别。在 Java 中数据类型可以分为两大类:基本类型引用类型。...基本类型也称为值类型,分别是字符类型 char,布尔类型 boolean以及数值类型 byte、short、int、long、float、double。引用类型则包括类、接口、数组、枚举等。   ...基本类型直接在栈 stack中存储数值,而引用类型是将引用放在栈中,实际存储的值是放在堆 heap中,通过栈中的引用指向堆中存放的数据。...上图定义的 a 和 b 都是基本类型,其值是「直接存放在栈中」的;而 c 和 d 是 String 声明的,这是一个引用类型,「引用地址是存放在栈中,然后指向堆的内存空间」。  ...下面 d = c;这条语句表示将 c 的引用赋值给 d,那么 c 和 d 将指向同一块堆内存空间。

    10410

    Swift 值类型引用类型

    大家好,又见面了,我是全栈君 Swift中的类型分为两类:一,值类型(value types),每个值类型的实例都拥有各自唯一的数据,通常它们是结构体,枚举或元组;二,引用类型(reference types...),引用类型的实例共享它们的数据,通常是一个类。...在这篇文章中我们将会探索值类型引用类型的价值,以及如何在它们二者间抉择。 有什么区别?...由于只有当你需要修改数据时两者的区别才会得到体现,所以当你的实例不会对数据进行修改的时候,值类型引用类型看起来是完全相同的。...当你写Cocoa程序的时候,大多数APIs都需要从NSObject继承,你就已经是一个类了(引用类型),针对其他情况,这里有些指导规则: 使用值类型,当…: 通过使用==去比较实例的数据 你想得到一个实例的独立副本

    69220

    java学习引用类型之软引用

    Java的软引用(Soft Reference)是一种引用类型,它在内存管理中起到一种重要的作用。它与其他引用类型(如强引用和弱引用)相比,具有一定的特点和用途。...软引用的主要作用是在内存不足时,允许垃圾回收器回收被软引用指向的对象,以释放内存空间。这使得软引用常用于以下场景:缓存:软引用常被用于实现缓存机制。...在内存充足的情况下,可以快速地获取软引用所指向的对象,而在内存不足时,垃圾回收器会自动清理这些被软引用引用的对象,从而释放内存。图片加载:在Android开发中,软引用广泛应用于图片加载中。...使用软引用可以管理数据库连接对象,当连接对象闲置一段时间后,垃圾回收器可以自动回收这些软引用,从而释放连接资源。...softRef进行引用

    30510

    【C 语言】数据类型本质 ( sizeof 函数 | 数据类型大小 )

    文章目录 一、sizeof 函数 二、数据类型大小 三、代码示例 一、sizeof 函数 ---- sizeof() 函数可以计算 数据类型 的大小 ; sizeof (类型说明符/表达式) 可以向函数中传递...数据类型 变量 表达式 作为参数 , 如果传入变量 , 会计算变量对应的数据类型对应的内存大小 , 如果传入表达式 , 会计算表达式计算结果的数据类型对应的大小 ; 一般情况下都传入数据类型 ; 二、...数据类型大小 ---- int a; int array[10]; 使用 sizeof() 函数 计算 数据类型大小 ; 上述 sizeif(a) 的值为 4 , sizeof(array) 的值是...40 ; a 表达式类型是 int , 该类型占据 4 字节的内存空间 ; array 表达式类型是 int[10] 数组类型 , 该类型占据 40 字节的内存空间 ; C 语言编译器 解析到...(a)=4, sizeof(array)=40 printf("sizeof(a)=%d, sizeof(array)=%d\n", sizeof(a), sizeof(array));

    95510

    java学习引用类型之强引用

    在Java中,强引用(Strong Reference)是最常见、默认的引用类型。它是一种正常的对象引用,如果一个对象具有强引用与之关联,那么即使内存紧张,垃圾回收器也不会回收该对象。...强引用可以通过变量 str 直接访问对象,而且只要 str 存在,垃圾回收器就不会回收被引用的字符串对象。强引用的特点包括:强引用可以直接访问对象。强引用不会在内存充足的情况下被垃圾回收器回收。...强引用可以避免对象被提前回收,但也可能导致内存泄漏问题。需要注意的是,当一个对象不再被引用时,即没有任何强引用指向它时,它将成为垃圾回收的候选对象。...强引用是Java中最常用的引用类型,大多数情况下,我们使用的都是强引用。...强引用类型只有显式地设置o为null,或超出对象的生命周期范围(如非全局变量),则gc认为该对象不存在引用,这时就可以回收这个对象。

    13820

    java学习引用类型之弱引用

    在Java中,弱引用是一种比软引用更弱的引用类型。弱引用对象的生命周期更短暂,当垃圾回收器进行垃圾回收时,如果一个对象只被弱引用引用,那么该对象会被回收。...与软引用不同,弱引用通常用于实现缓存、观察者模式等场景,其中对象的生命周期需要根据是否被其他强引用引用来确定。一旦对象不再被强引用引用,弱引用就会失效并被垃圾回收器回收。...如果使用强引用引用观察者对象,那么观察者对象无法被垃圾回收,即使它已经不再需要。而使用弱引用引用观察者对象,当观察者对象不再被其他强引用引用时,垃圾回收器就会回收它,避免了内存泄漏。...弱引用和软引用是Java中两种不同的引用类型,它们之间有以下几个区别:生命周期:弱引用的生命周期更短暂。当垃圾回收器进行垃圾回收时,如果一个对象只被弱引用引用,那么该对象会被回收。...在实际使用中,需要根据具体需求选择合适的引用类型来管理对象的生命周期和内存使用。

    34430

    引用类型「建议收藏」

    引用类型类型标识符和一个取地址操作符来定义 引用必须被初始化 例如 int ival = 1024; // ok: refVal 是一个指向 ival 的引用 int &refVal = ival...; // 错误 引用必须被初始化为指向一个对象 int &refVal2; 一旦引用已经定义, 它就不能再指向其他的对象, 这是它为什么必须要被初始化的原因 。...const引用可以用不同类型的对象初始化 只要能从一种类型转换到另一种类型即可 也可以是不可寻址的值 如文字常量 例如 double dval = 3.14159; // 仅对于 const...引用是不合法的 原因: 引用在内部存放的是一个对象的地址 它是该对象的别名 对于不可寻址的值 如文字 常量 以及不同类型的对象 编译器为了实现引用 必须生成一个临时对象 引用实际上指 向该对象 但用户不能访问它...因为它们是只读的 不允许非 const引用指向需要临时对 象的对象或值 一般来说 这比 允许定义这样的引用 但实际上不会生效 的方案要好得多 发布者:全栈程序员栈长,转载请注明出处:https://

    20910
    领券