错误示例:字节对齐 博客分类: c++
程序员文章站
2024-03-19 10:21:16
...
#include<vector> #include<iostream> #include<stdio.h> struct student { char c; int age; }__attribute__((packed)); //win32 系统中 codeblock 运行结果:为8,char和int换位置后结果为:5 #pragma pack(push, 1) struct student1 { char c; int age; }; #pragma pack(pop) //无论哪个平台结果都是5 int main() { student st; student1 st1; std::cout << sizeof(st) << std::endl; std::cout << sizeof(st1) << std::endl; return 0; }
在student结构体中,如果在结构体后面加__attribute__((packed)),char在int前和后,sizeof()计算出来的是不一样的,具体原因不清楚,暂时先记下来。但是如果是加 #pragma pack(push,1) 和 pragma pack(pop)就不会出现这个问题。