当前位置: 技术问答>linux和unix
字节对齐
来源: 互联网 发布时间:2015-12-30
本文导语: 我初用Linux, 这个问题不是很明白. struct srt1 { char c; int i; double d; }; struct srt2 { char c; int i; char c2; double d; }; sizeof srt1; //16 sizeof srt2; //16 我刚从windows转过来, 如果是VC6的话, srt...
我初用Linux, 这个问题不是很明白.
struct srt1
{
char c;
int i;
double d;
};
struct srt2
{
char c;
int i;
char c2;
double d;
};
sizeof srt1; //16
sizeof srt2; //16
我刚从windows转过来, 如果是VC6的话, srt2中, 内存结构是这样的:
|c---| i |c2---|----| d | 共24字节.
也就是说c2后面会offset7个字节.
而在linux的G++中, 得到的结果 srt1和srt2 都是16字节, 请说说原因, 如果有什么好的链接就请贴上吧, 谢谢.
struct srt1
{
char c;
int i;
double d;
};
struct srt2
{
char c;
int i;
char c2;
double d;
};
sizeof srt1; //16
sizeof srt2; //16
我刚从windows转过来, 如果是VC6的话, srt2中, 内存结构是这样的:
|c---| i |c2---|----| d | 共24字节.
也就是说c2后面会offset7个字节.
而在linux的G++中, 得到的结果 srt1和srt2 都是16字节, 请说说原因, 如果有什么好的链接就请贴上吧, 谢谢.
|
g++ 3.2 的结果还是20呢
那些都是编译器的选择,何必管他呢,我一般都不让他对齐
#pragma pack(1)
那些都是编译器的选择,何必管他呢,我一般都不让他对齐
#pragma pack(1)