我使用 sizeof 在 C 中获取结构的大小,但我得到的结果是出乎意料的。
struct sdshdr {
int len;
int free;
char buf[];
};
int main(){
printf("struct len:%d\n",(sizeof(struct sdshdr)));
return 0;
} //struct len:8, with or without buf
我的问题是为什么不buf
占用任何空间,为什么int
类型的大小在 64 位 CPU 上仍然是 4?
这是来自的输出gcc -v
:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.4.0
Thread model: posix