微小的c ++结构的行为

lit*_*tro 6 c++ struct

如果我定义一个结构,如:

struct tiny
{
    long t;
};
Run Code Online (Sandbox Code Playgroud)

它会像long函数参数一样被处理,例如,参数如下:

void myfunc(tiny x)
{ ... }
Run Code Online (Sandbox Code Playgroud)

long通过实际被推入堆栈,像参数一样处理?

从本质上讲,tiny结构只是与其唯一成员一样大吗?

谢谢

Jer*_*fin 7

不能保证它,但至少对于我看过它的编译器通常会是,是的.


Avi*_* A. 7

结构的内存消耗至少是组成变量的内存大小的总和.

但是,编译器可以在变量之间或结构的末尾添加填充,以确保给定计算机体系结构的正确数据对齐

  • @dauphic不,类/结构可以是POD并且仍然有填充. (3认同)
  • @dauphic:POD可以有填充,只是不在开头.见2003年的9.2/17. (2认同)