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

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

2012-03-11 
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下测试上式成立


[解决办法]

探讨
对于结构体如:
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

热点排行