首页 > 其他分享 >计算类的大小

计算类的大小

时间:2023-04-28 09:45:44浏览次数:48  
标签:存储 变量 对象 成员 代码段 内存 计算 大小

1. 对象存储规则

类实例化出的对象, 有成员变量和成员函数, 它们是存储在对象的?

实际上, 只有非静态的成员变量存储在对象中, 而成员函数是存储在公用代码段中, 如下图

现在知道了成员变量存储在对象中, 成员函数在公用代码段, 那么成员变量在内存中是如何存储的

对象中的成员变量在存储时需要遵守内存对齐的规则

下面用代码证明

#include <iostream>
using namespace std;

class obj
{
	void _print()
	{
		cout << "test" << endl;
	}
	char _ch;
	int _a;
};
int main()
{
	// 计算类 = 计算类的对象
	obj obj1;
	printf("%d\n", sizeof(obj));
	printf("%d\n", sizeof(obj1));
}

如图, 在计算类时, 只计算了类(对象)中的成员变量的大小, 因为成员函数在公用代码段

最后打印出的8证明成员变量在存储时遵守内存对齐

2. 计算空类

一个没有成员的类, 大小是多少?

如图, 结论是1字节, 空类大小为一个字节是为了占位不存储有效数据

标签:存储,变量,对象,成员,代码段,内存,计算,大小
From: https://www.cnblogs.com/xumu11291/p/17360934.html

相关文章

  • 计算机操作系统随笔
    计算机操作系统是一种控制和管理计算机硬件和软件资源的软件程序,类比为一座大厦的物业管理。它负责管理计算机硬件资源,如中央处理器、内存、硬盘等,以及软件资源,如程序、文件等。一座大厦的物业管理主要负责管理大厦的各项资源,如电力、水源、电梯、消防等,确保大厦能够正常运作。......
  • 计算机网络基础——10 活动目录AD的配置和应用
    10.1实验目的1.了解域和活动目录的概念2.掌握 Windows server 2003 中活动目录 AD 的安装与配置3.掌握加入域和登录域的方法10.2实验相关知识:域与活动目录的概念  一台 Windows 计算机,在网络中要么隶属于工作组,要么隶属于域。工作组通常是几部计算机组成的逻辑集合,又......
  • 通过组策略在计算机网络位置添加ftp
    原理在%APPDATA%\Microsoft\Windows\NetworkShortcuts目录添加ftp快捷方式即可。操作名称中填入完整路径和ftp快捷方式的名称,比如这样:%APPDATA%\Microsoft\Windows\NetworkShortcuts\share ......
  • c# 计算程序执行时间,计算一段代码执行所用的时间,测试效率
    usingSystem;usingSystem.Threading;classClass1{ [System.Runtime.InteropServices.DllImport("Kernel32.dll")] staticexternboolQueryPerformanceCounter(reflongcount); [System.Runtime.InteropServices.DllImport("Kernel32.dll")] ......
  • 前端JavaScript的精确计算问题
    问题发现"47.900000"*"771.65" = 36962.034999999996 (错误)  36962.035(正确)问题定位JavaScript前端计算不精确(浮点数计算的精确问题)问题解决除法函数,用来得到精确的除法结果说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比......
  • java处理逻辑表达式计算问题
    在处理SQL的where条件时,发现逻辑运算表达式不是那么简单,并不是一种线型计算结构。但是表达式树的计算又是SQL查询引擎的核心,SQL的抽象语法树最终还是要转换为表达式树来处理。所以基于原来的表达式案例,进行简单的升级,写了一个简单的逻辑表达式处理器。首先我们的逻辑表达式的操......
  • 前端项目使用vw视口单位进行适配时字体大小的解决方案
    使用视口单位vw来实现响应式排版。1vw等同于视口宽度的百分之一,即如果你用vw来设定字体大小的话,字体的大小将总是随视口的大小进行改变。问题在于,当做上面的事情的时候,因为文本总是随着视口的大小改变大小,用户失去了放缩任何使用vw单位的文本的能力。所以你永远都不要只用viewpo......
  • C#计算日期间隔(小数)
    参考内容TimeSpan结构在DateTime、DateOnly、DateTimeOffset、TimeSpan、TimeOnly和TimeZoneInfo之间进行选择TimeZoneInfo类DateTimeOffset结构C#日期间隔:如何计算两个日期相差几年几个月?C#中两个日期之间的间隔天数CalculateYear,MonthandDaybetweentwoDat......
  • 比较两个时间大小 datetime
    DateTime时间A=DateTime.Now;DateTime时间B=now.AddHours(1);intresult=时间A.CompareTo(时间B);if(result<0){//如果当前实例早于指定的日期时间,则返回小于零的值Console.WriteLine("时间A比时间B要早");}elseif(result==0){//如果当前......
  • 4 概率计算:把握机会
    概率是量度某事发生几率的一种数量指标。你可以用概率衡量发生某件事的可能性,或不会发生某事的可能性。事件就是人们能指出其发生可能性大小的任何事情。概率的量度尺度是0一1。如果某件事不可能发生,则其概率为0;如果某件事肯定会发生,则其概率为1;大多数时候,你所面对的都是介......