C ++ struct内存分配

时间:2015-06-18 19:49:19

标签: c++ memory struct

如果我定义了像这样的结构

,那么在C ++中

struct ComplexFloat {
  float r;
  float i;
};

我声明了两个这样的变量

struct ComplexFloat cf;
float *f=(float*)cf;

我可以安全地假设以下条件永远是真的

(&(cf.r)==&(f[0]) && &(cf.i)==&(f[1]))

换句话说,我可以安全地假设在包含浮点数的结构中,它的元素将占用内存中的连续位置,并将根据它们在结构定义中出现的顺序进行排序吗?

我测试了Ubuntu的gcc 4.8.2,我只是想确保它始终有效。

1 个答案:

答案 0 :(得分:2)

不,你不能假设我将在正确的位置,除非你控制结构中的数据对齐。 r和i之间可能存在对齐填充