当前位置: 首页 > article >正文

C语言-结构体内存大小

#include <stdio.h>
#include <string.h>
struct S1 {       
    char a;//1        
    int b;//4
    char c;//1
};
//分析   默认对齐数    成员对齐数    对齐数(前两个最小值)   最大对齐数
//                 8                     1                              1                          4
//                 8                     4                              4                
//                 8                     1                              1                
//结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍
typedef struct S2 {
    int a;//4
    char b;//1
    int c;//4
    char d;//1
}SS2;
int main() {
    struct S1 s1;
    printf("%lld %zu", sizeof(s1), sizeof(struct S1));//12 12
    printf("%zu", sizeof(SS2));//16
    return 0;
}

总结:
结构体的对齐规则:
       1. 第一个成员在与结构体变量偏移量为 0 的地址处。
       2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
             默认对齐数            成员对齐数(成员大小)

      对齐数=默认对齐数    VS        成员对齐数(成员大小)中的较小值
           对齐数  =  编译器默认的一个对齐数 与 该成员大小的 较小值
                  VS 中默认的值为    8
             linux中默认值为     4
       3. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。

  其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 ***

#include <stdio.h>
struct   num
{
    double a;//8
    char b;//1
    int c;//4
    char d;//1
};
int main() {
    printf("%lld", sizeof(struct num));  //24
    return 0;

 


http://www.kler.cn/a/451329.html

相关文章:

  • 【0x001D】HCI_Read_Remote_Version_Information命令详解
  • 【MySQL】7.0 入门学习(七)——MySQL基本指令:帮助、清除输入、查询等
  • Linux服务器端自动挂载存储设备(U盘、移动硬盘)
  • Linux搭建TRELLIS详细流程
  • WebAPI编程(第一天,第二天)
  • 探索AI代理在《我的世界》中的奇妙之旅:代理IP的角色与影响
  • 【产品更新】汇匠源保证金保函平台v2.0.23
  • TipTap编辑器:现代化的富文本编辑解决方案
  • 24/12/24 力扣每日一题 # LeetCode 524. 通过删除字母匹配到字典里最长单词 全网最详细解释
  • Vue中使用a标签下载静态资源文件(比如excel、pdf等),纯前端操作
  • 【落羽的落羽 C语言篇】自定义类型——联合体、枚举
  • 【每日学点鸿蒙知识】沙箱目录、图片压缩、characteristicsArray、gm-crypto 国密加解密、通知权限
  • PyTorch 神经网络回归(Regression)任务:关系拟合与优化过程
  • 首次接触结构安全自动化监测系统,价格高吗?后期维护?
  • FreeRTOS的任务挂起和恢复
  • 高阶:基于Python paddleocr库 提取pdf 文档高亮显示的内容
  • eNSP安装教程(内含安装包)
  • 如何制作期末成绩查询小程序系统?
  • 【magic-dash】01:magic-dash创建单页面应用及二次开发
  • Cornerstone3d 基础概念
  • ECharts散点图-气泡图,附视频讲解与代码下载
  • Pytorch文件夹结构
  • 2024 年12月英语六级CET6听力原文(Long Conersation和Passage)
  • Java期末复习JDBC|网课笔记+校课总结
  • 麒麟系统修改配置镜像源地址并安装openGL
  • WebAssembly与WebGL结合:高性能图形处理