假设我有一个大结构,其中包括其他结构等。 gcc -os
或任何其他 gcc 优化开关会改变它在内存中的存储方式吗? IE。它会打包结构以挤出一些额外的空间吗?
谢谢,
最佳答案
不,为了更改 gcc
中结构的 native 平台对齐方式,您必须显式使用 __attribute__((packed))
或 __attribute__((align X))
编译器指令,或其他 gcc
命令行开关,专门指示编译器更改数据结构的 native 平台对齐方式.
此外,使用混合数据类型打包结构,以便所有数据成员可能不会在内存中的正确字边界上对齐,实际上 较慢 在运行时访问数据成员,而不是更快。这是因为在访问数据成员之前,编译器必须将结构解包回平台的 native 对齐方式。
关于c - gcc优化对结构尺寸的影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7635951/