谈谈C++中的数据对齐

本文探讨了C++中的数据对齐概念,解释了处理器如何按字节边界读取数据,以及编译器如何通过填充字节来优化效率。通过实例展示了数据对齐的重要性,特别是在底层开发和内存紧张的环境中,理解数据对齐有助于节省内存。最后提到了结构体设计时的考量,并提及了如Visual Studio中的__alignof函数来查看类型对齐要求。
摘要由CSDN通过智能技术生成

对于C/C++程序员来说,掌握数据对齐是很有必要的,因为只有了解了这个概念,才能知道编译器在什么时候会偷偷的塞入一些字节(padding)到我们的结构体(struct/class),也唯有这样我们才能更好的理解、优化结构体和内存。
 

几个栗子

看看几个简单的Struct,能猜出他们的SIZE吗?(运行于64Bit win10 vs2017)

struct A
{
   
	char c1;
};

struct B
{
   
	int i1;
};

struct C
{
   
	char c1;
	int i1;
};

struct D
{
   
	char c1;
	int i1;
	char c2;
};

struct E
{
   
	char c1;
	char c2;
	int i1;
};

int main()
{
   
	std::cout 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值