c - gcc优化对结构大小的影响

标签 c optimization gcc

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

谢谢,

最佳答案

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

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

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

相关文章:

c - 为什么 free() 会在内存中留下东西?

c - C 中的内存划分

css - 当图像被 css 隐藏时阻止图像下载

gcc - 在 GCC 中编译 : Is -O3 harmful?

c++ - 如何使用 windows/cygwin 从 CMakeLists.txt 中的 Clion 中的 GCC 和 Clang 之间切换

gcc - 如何在 64 位 RHEL 上编译 32 位应用程序?

c - 错误 *** 没有名为 *** 的成员

c++ - for (;;) 循环的作用是什么

c# - 优化 Entity Framework 6 并减少往返

c++ - 哪个处理器的成本更高?