feilengcui008的专栏

有时会在c/c++中看到这种形式

#pragma pack(n)#pragma pack()

前一句代表设置对齐的字节数为n,而不是编译器默认的对齐字节数(ubuntu 14.04 x86_64下为8),后一句代表恢复默认值,,合理地使用内存对齐能减少程序占用的内存空间,使用不当也会降低存取效率从而降低程序性能。在分析内存对齐时,只需要采用以下的原则,这里以一段代码简单解释下

main(){default_pack_struct_size_bigger {struct c {long long a;char d;} m;char b;};printf(“default_pack_struct_size_bigger:%d\n”,(int)sizeof(struct default_pack_struct_size_bigger));//struct成员字节数都小于pack,按字节数最大的对齐=>4struct default_pack_struct_size_smaller {char a;short int b;};printf(“default_pack_struct_size_smaller:%d\n”,(int)sizeof(struct default_pack_struct_size_smaller));pack_4_struct_size_bigger {a;long long b;};printf(“pack_4_struct_size_bigger:%d\n”,(int)sizeof(struct pack_4_struct_size_bigger));//结构成员都小于4字节 => 4 struct pack_4_struct_size_smaller {char a;b;};printf(“pack_4_struct_size_smaller:%d\n”,(int)sizeof(struct pack_4_struct_size_smaller));;}

结果:

真正的爱,应该超越生命的长度心灵的宽度灵魂的深度

feilengcui008的专栏

相关文章:

你感兴趣的文章:

标签云: