/*
Name: struct.cpp
Copyright: 2113040833
Author: 付佳伟
Date: 23/04/22 16:30
Description: 结构体内存对齐、修改默认对齐数 、对结构体内存对齐的理解、
offsetof的使用
*/
#include<stdio.h>
#include<stddef.h> //offsetof的头文件//
// 第一个成员在结构体变量偏移处为0 //
//其他成员要对齐到对齐数的整数倍数的地址处//
//结构在对齐方式不合适的时候可以自己设定//
// 结构体内存对齐 拿空间换时间//
//设计结构体成员时尽量让小的成员集中在一起,让对齐的时候少浪费空间//
// 为什么要内存对齐
//平台原因//
//性能原因//
#pragma pack(4)//修改默认对齐数为4
struct s
{
char c;
double d;
};
#pragma pack//取消默认对齐数
int main()
{
printf("%d\n",sizeof(s));//未改默认对齐数此时结果为16//
//修改默认对齐数为结果为12 //
//offsetof//
printf("%d\n",offsetof(struct s,c));
printf("%d\n",offsetof(struct s,d));
return 0;
}
结构体内存对齐
最新推荐文章于 2024-10-02 23:41:45 发布