struct/class的数据对齐---简单解析

网上教程一大堆,我这边就不再赘述废话了

思路方法:

1,以四个为一组,最终的内存所占结果必须是四的倍数

2,优先考虑四的整数倍,之后再考虑内存空间问题

struct Beyond{int  a;char b;short c;};
int main()
{struct Beyond yanyu;cout<<sizeof(yanyu)<<endl;
}

解释:首先int占4字节,char占1字节,short占2字节。
以四为一组,先是存放int刚好四个字节,之后再存放char,有两种选择:
①char占四个字节(浪费三个字节空间),short占四个字节(浪费两个字节空间)
②char占两个字节(浪费一个字节空间),short占两个字节,这俩个组成一组
要你你会如何选择?很显然选择方案②
最终:int占四个字节(为一组)、char占两个字节short占两个字节(为一组),最后所占内存空间为4+4=8字节

struct Data{char b;int  a;short c;};
int main()
{struct Beyond yanyu;cout<<sizeof(yanyu)<<endl;
}

解释:首先char为一个字节,int为四个字节,四个字节为一组,没办法,为了高效,只能浪费内存空间了,char只能占四个字节独自成为一组;int占四个字节为一组;short占两个字节,但是必须四个字节为一组,故short也只能占四个字节成为一组。
最终:char占四个字节(浪费两个字节空间)为一组,int占四个字节为一组,short占四个字节(浪费俩个字节空间)为一组。最后所占内存空间为4+4+4=12字节。

struct Beyond{char b;short c;int  a;};
int main()
{struct Beyond yanyu;cout<<sizeof(yanyu)<<endl;
}

解释:首先char占一个字节,short占两个字节;有两种方案可以执行:
①char占四个字节(浪费三个字节内存空间),组成一组,short占四个字节(浪费两个字节内存空间),组成一组;
②char占两个字节(浪费一个字节内存空间),short占两个字节,共组成一组
要你你会如何选择?肯定是方案②
紧接着,int占四个字节为一组。
最终:char占两个字节,short占两个字节,int占四个字节,2+2+4=8个字节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工程师英语和计算机证书查询,点击进入国家硬件维修工程师证书查询网站

工程师证书查询网站人力资源社会保障部指定查询国家职业资格证书的唯一官方网站。涵盖全国各省市、各行业、各央企颁发的证书。电脑硬件维修工程师网上能查看国家工信部硬件维修工程师证书查询网址&#xff1a;http://www.ceiaec.org/index.htm工程师证书编号在网上怎么查询如果…

stl vector 函数_vector :: at()函数以及C ++ STL中的示例

stl vector 函数C vector :: at()函数 (C vector::at() function) vector::at() is a library function of "vector" header, it is used to access an element from specified position, it accepts a position/index and returns the reference to the element at…

敏捷开发“松结对编程”系列之七:问题集之一

本文是“松结对编程”系列的第七篇。&#xff08;之一&#xff0c;之二&#xff0c;之三&#xff0c;之四&#xff0c;之五&#xff0c;之六&#xff0c;之七&#xff0c;之八&#xff09;刚刚参加完MPD 2011深圳站&#xff0c;在演讲中间及后来媒体采访&#xff0c;被问到了一…

powerdesigner 导出数据库表结构

http://www.360doc.com/content/12/0817/19/61497_230730771.shtml转载于:https://www.cnblogs.com/gaohuag/p/3169095.html

C++中的sort函数对二维数组排序是按照什么准则?

遇到的一个疑惑&#xff0c;现记录如下&#xff1a; int main() {vector<vector<int>> envelopes { {5, 8},{6, 7},{6, 4},{2, 3},{8,9} };sort(envelopes.begin(), envelopes.end());for (int i 0;i < envelopes.size();i)cout << envelopes[i][0]<…

Exercises

I. Faulty sentences 1&#xff0c;Our host entertained us with many interesting stories of adventure, he has been a member of an exploration team working in the Arctic. 翻译&#xff1a;我们的主持人用许多有趣的冒险故事来娱乐我们&#xff0c;他是北极探险团队…

数学专业学计算机哪一行,计算数学

计算数学(一个理科专业)语音编辑锁定讨论上传视频计算数学是由数学、物理学、计算机科学、运筹学与控制科学等学科交叉渗透而形成的一个理科专业。中文名计算数学外文名Computational Mathematics所 属数学计算数学专业定义编辑语音计算数学也叫做数值计算方法或数值分析。主…

数论之数字根 杭电1013

做这道题就有一种感觉&#xff0c;&#xff0c;数学真是奇妙&#xff0c;&#xff0c;在网上查了一下&#xff0c;才知道数字根有那么多奇妙的性质。不过&#xff0c;对于这道题我却是不太理解&#xff0c;&#xff0c;主要是不会证明为什么数字根就是各个位加起来对9取余&…

ubuntu12.10下安装mysqlworkbench出现“Dependency is not satisfiable: libctemplate0”问题的解决方案...

(原文地址&#xff1a;http://www.cnblogs.com/Deasel-s-magic-box/p/3169790.html) 之前在window下面一直用navicat&#xff0c;转到ubuntu下之后&#xff0c;虽然也找到一个navicat的linux版&#xff0c;但是经常各种莫名其妙的挂掉&#xff0c;而且界面实在是挫的1B 。 所以…

图片透视变换操作

由于照相机硬件设备本身的误差&#xff0c;可能会导致镜头畸变&#xff0c;从而导致照相机拍摄到的照片产生失真现象&#xff0c;此时可以通过透视变换去适当的校正。 大概的思路&#xff1a;在原图像上确定四个点&#xff0c;然后再新图像上也确定四个点&#xff0c;通过warp…

dp笔记:关于DP算法和滚动数组优化的思考

从网上总结了一些dp的套路以及对滚动数组的一些思考&#xff0c;现记录如下&#xff0c;希望以后回顾此类算法时会有所帮助。 目录1、DP算法经验1、DP算法核心&#xff1a;2、DP算法类别以及例题例1&#xff1a;三步问题例2&#xff1a;最小路径和例3&#xff1a;乘积最大子数组…

高职单招面试自我介绍稿子计算机专业,单招面试自我介绍稿子范文

每年很多参加高职单招的同学笔试不错&#xff0c;却在面试环节上失败了。单招面试需要技巧&#xff0c;需要考生细心准备&#xff0c;以自信乐观的态度全面对单招面试。下面是小编整理的单招面试自我介绍范文及技巧&#xff0c;欢迎阅读。1单招面试自我介绍范文各位老师好&…

as_hash ruby_Ruby中带有示例的Hash.delete_if方法

as_hash rubyHash.delete_if方法 (Hash.delete_if Method) In this article, we will study about Hash.delete_if Method. The working of this method can be predicted with the help of its name but it is not as simple as it seems. Well, we will understand this meth…

java学习笔记十二——多态

满足多态的基本条件1、要有继承2、要有重写3、父类引用指向子类对象/** 多态例子 */ //定义游戏抽象类abstract class gameObject { String gameName; abstract String getGameName();}//红警游戏class redAlert extends gameObject { String gameName "red Ale…

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 解决方案

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 解决方案 NoClassDefFoundErrorLogFactorySpringHibernate Spring3.1启动时报错&#xff1a;Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogF…

【C++ grammar】引用

1、引用就是另一个变量的别名 2、通过引用所做的读写操作实际上是作用与原变量上 引用方式&#xff1a; int x; int & rxx; or int x, &rxx;在C中&是取地址&#xff0c;在C中&放在一个变量的定义前&#xff0c;那就是引用 注意&#xff1a; 这种引用是错误的…

网络安全 攻击类型_网络攻击的类型| 网络安全

网络安全 攻击类型Nowadays Cyber Security is an essential part of our life. We are store, secure and use data and security is important to prevent to steal data. There are numbers of attacks done by the attackers for ex: Man in middle attacks, Brute force, …

flash安全策略的理解

flash安全策略的理解 2011-06-25 01:48 11人阅读 评论(0) 收藏 举报 一直以来对flash的安全策略是一头雾水&#xff0c;什么安全沙箱&#xff0c;跨域策略文件一堆东西乱七八糟&#xff0c;搞不清楚。不过纠结到现在已经基本上理解了。 flash的安全问题在官方手册上有足够的解…

【C++ grammar】nullptr and Dynamic Memory Allocation (空指针和动态内存分配)

空指针 1.1. 0带来的二义性问题 C03中&#xff0c;空指针使用“0”来表示。0既是一个常量整数&#xff0c;也是一个常量空指针。C语言中&#xff0c;空指针使用(void *)0来表示有时候&#xff0c;用“NULL”来表示空指针(一种可能的实现方式是#define NULL 0) 1.2. C标准化委…

yum update Transaction Check Error

update系统时&#xff0c;发现其中一台server居然提示&#xff1a; Transaction Check Error:file /usr/lib/perl5/5.8.8/CGI.pm from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386file /usr/lib/perl5/5.8.8/Digest…