读书人

C语言结构体内存分布的有关问题

发布时间: 2012-03-11 18:15:38 作者: rapoo

C语言结构体内存分布的问题?
对于结构体如:
struct S {
char a;
int b;
char c;
}
一定能够保证 AddressOf(a) < AddressOf(b) < AddressOf(c) 吗? C语言标准对这个问题是怎么说的. 编译器有没有兴趣把成员c移到a和b之间多出的内存里来?
注: 在Mingw下测试上式成立


[解决办法]

探讨
对于结构体如:
struct S {
char a;
int b;
char c;
}
一定能够保证 AddressOf(a) < AddressOf(b) < AddressOf(c) 吗? C语言标准对这个问题是怎么说的. 编译器有没有兴趣把成员c移到a和b之间多出的内存里来?
注: 在Mingw下测试上式成立

[解决办法]
编译器没有没有兴趣把成员c移到a和b之间多出的内存里来。
这个即使有这个能力也不能这么做。
[解决办法]
AddressOf(a) < AddressOf(b) < AddressOf(c)
一定成立,因为他们是结构体成员,对于结构体成员计算机会自动分配连续单元格,先给a,在给b,其次给c

读书人网 >C语言

热点推荐