假设我有一个大结构,其中包括其他结构等。 gcc -os 或任何其他 gcc 优化开关会改变它在内存中的存储方式吗? IE。它会打包结构以挤出一些额外的空间吗?

谢谢,

最佳答案

不,为了更改 gcc 中结构的 native 平台对齐方式,您必须显式使用 __attribute__((packed))__attribute__((align X)) 编译器指令,或其他 gcc 命令行开关,专门指示编译器更改数据结构的 native 平台对齐方式.

此外,使用混合数据类型打包结构,以便所有数据成员可能不会在内存中的正确字边界上对齐,实际上 较慢 在运行时访问数据成员,而不是更快。这是因为在访问数据成员之前,编译器必须将结构解包回平台的 native 对齐方式。

关于c - gcc优化对结构尺寸的影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7635951/

10-13 07:46
查看更多