C语言结构体内存分布的有关问题
C语言结构体内存分布的问题?对于结构体如:struct S {char aint bchar c}一定能够保证 AddressOf(a) A
C语言结构体内存分布的问题?
对于结构体如:
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