C语言之内存对齐

我们对自定义数据类型sizeof获取大小时,并不是每个成员的大小进行累加,操作系统为了便于内存访问,往往以成员所占大小最大的成员进行对齐。

比如

struct test
{
char c;
double d;
};

我们可以通过#pragma pack(n)  n为对齐参数进行调整,直接贴代码

#include 

#pragma pack(1)   //设置对齐对齐参数为1 及一字节对齐
struct Test
{
	char c;
	long lValue;
};
#pragma pack()   //恢复系统默认对齐参数

struct TestContrast
{
	char c;
	long lValue;
};

int main(int argc, const char *argv[])
{
	printf("One Byte Alignment:%d\n", sizeof(struct Test));
	printf("System default Alignment:%d\n", sizeof(struct TestContrast));
	return 0;
}
在64位Linux系统运行结果如下


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值