C语言struct,union内存对齐

测试环境:

c 复制代码
#include<stdio.h>
int main(){
 //1字节对齐
 struct XXX{
  unsigned char ch;
  unsigned int in;
  unsigned short si;
 }__attribute__((packed));
 struct XXX xxx;
 printf("%zd\n",sizeof(xxx));//7

 #pragma pack(1)
 struct YYY{
   unsigned char ch;
   unsigned int in;
   unsigned short si;
 };
 struct YYY yyy;
 printf("%zd\n",sizeof(yyy));
 #pragma pack()

 //不进行对齐限制,编译器决定
 //默认对齐方式是采用当前最长的变量的长度作为对齐方式
 struct ZZZ{
   unsigned char ch;
   unsigned int in;
   unsigned short si;
 };
 struct ZZZ zzz;
 printf("%zd\n",sizeof(zzz));//12


 return 0;
}
相关推荐
长河16 小时前
Java开发者LLM实战——LangChain4j最新版教学知识库实战
java·开发语言
第七序章16 小时前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
Cyan_RA916 小时前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
l1t18 小时前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
再见晴天*_*19 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
l1t20 小时前
利用美团龙猫用libxml2编写XML转CSV文件C程序
xml·c语言·libxml2·解析器
lqjun082721 小时前
Qt程序单独运行报错问题
开发语言·qt
hdsoft_huge1 天前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘1 天前
39.网络流入门
开发语言·网络·c++·算法
未来之窗软件服务1 天前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟