您的位置:首页 > 编程语言 > C语言/C++

一道C语言笔试题——理解结构体的内存对齐和位域问题

2011-10-29 10:43 423 查看
(Win32平台下在GNU GCC编译器中)

给定结构struct A

{

char t:4;

char k:4;

unsigned short i:8;//short大小为2字节,与之前的8位总共3个字节,补1个字节形成4字节对齐,到此为4字节

unsigned long m;//long大小为4字节

};问sizeof(A) = ?

【标准答案】8

注意:字节对齐还与编译器有关!!!

编译器自身的默认对齐大小。

gcc默认是按4字节对齐的,VC 6.0默认是按8字节对齐。但我们可以在程序中加入预编译指令改变默认对齐大小。

详细原理可参照:

C语言 结构体的内存对齐问题与位域 byxing_hao

编译器与字节对齐byzhangyang0402

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: