首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于sizeof()的有关问题

2012-10-12 
一个关于sizeof()的问题typedef struct{int ichar c char str[4]}S s为什么sizeof(s)输出为12呢?不是9

一个关于sizeof()的问题
typedef struct {int i;char c; char str[4];}S s; 为什么sizeof(s)输出为12呢?不是9吗?

[解决办法]
结构体对齐问题,可以看
http://blog.csdn.net/liukun321/article/details/6974282
希望对你有帮助。
[解决办法]
4+1+4=9,向4对齐到12
[解决办法]

C/C++ code
#include <iostream> using namespace std;#pragma pack(1)typedef struct{    int i;char c; char str[4];}S; void main() {    S s;    cout<<sizeof(s)<<endl; //输出9        }
[解决办法]
内存对齐原则,即:
为了加快计算机的取数速度,编译器默认对内存进行字节对齐。对结构体(包括类)进行字节对齐,原则是:
1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2)结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节);
3)结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。

热点排行