你真的懂字节对齐吗?

本文探讨了C++中的字节对齐问题,通过一个例子展示了不同结构体在Win32下的大小,解释了ISO/IEC 14882文档中关于字节对齐的标准解释,并进一步分析了在x64环境下可能出现的指针处理和虚函数问题,提醒开发者注意内存管理和跨平台开发的挑战。
摘要由CSDN通过智能技术生成

引子

       最近正在写一个小的应用,使用到了Apache的Log4cxx库,这个库依赖于Apache Portable Runtime库,可是遇到一个问题:使用Visual Studio 2013,在Win32(x86)平台下出现一个链接错误,是底层C库一个函数问题,初步怀疑微软打包Bug。这个问题在x64平台下可以编译通过。

       具体可以访问下面地址来查看问题:http://social.msdn.microsoft.com/Forums/zh-CN/851f56c2-bcc9-452e-863b-121b4f93c9d0/interlockedincrementvisualstudio2013?forum=visualcpluszhchs#851f56c2-bcc9-452e-863b-121b4f93c9d0

       但是这次的开发主要目的有两个:使用开发的便捷工具;锻炼C++11的编程能力。如果再回退到Visual Studio 2012或者更早版本就得不偿失了,所以只好切换到x64平台上了。

       但是Win32和x64平台编程,还是有很多区别的。首先一点就要防患于未然,那就是字节对齐问题了。

 

一个例子

       看下面的例子,在Win32下编译,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值