C函数参数,内存对齐注意事项

ide*_*n42 13 c function memory-alignment

在C中定义结构时,有关于填充的注意事项,如果结构大小是一个问题,则通常重新排列值以避免填充.(参见:结构填料和包装)

我的问题是:

相同(或类似)的规则是否适用于函数参数?...在安排参数以避免参数填充字节方面有什么好处吗?


  • 假设这不是inline(它不重要),或者static编译器可以重新排列参数的函数.

  • 接受现实世界可衡量的改善可能很小.

...实际上,如果函数调用开销是一个问题,可能值得内联函数.尽管如此,内联并不总是一个选项(例如库或函数指针).

ric*_*ici 3

参数如何传递给函数因架构而异,因此不可能提供任何明确的答案。然而,对于大多数现代体系结构,前几个参数在寄存器中传递,而不是在堆栈上传递,并且参数如何对齐并不重要,因为窄参数不会多路复用到单个寄存器中。