IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> struct/class的数据对齐---简单解析 -> 正文阅读

[C++知识库]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个字节。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:10:05  更:2022-02-28 15:11:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:43:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码