C对齐多维数组结构
发布时间:2020-12-16 07:29:56 所属栏目:百科 来源:网络整理
导读:在我的代码中,我必须考虑一个数组数组,其中内部数组具有固定的维度.为了使用STL算法,将数据实际存储为数组数组很有用,但我还需要将该数据传递给C库,该库采用扁平的C风格数组. 能够便宜地并且以便携方式转换(即展平)多维阵列将是很好的.我会坚持一个非常简单
在我的代码中,我必须考虑一个数组数组,其中内部数组具有固定的维度.为了使用STL算法,将数据实际存储为数组数组很有用,但我还需要将该数据传递给C库,该库采用扁平的C风格数组.
能够便宜地并且以便携方式转换(即展平)多维阵列将是很好的.我会坚持一个非常简单的案例,真正的问题是更一般的. struct my_inner_array { int data[3]; }; std::vector<my_inner_array> x(15); 是 &(x[0].data[0]) 指向大小为45 * sizeof(int)的连续内存块的指针,其中包含与x相同的条目?或者我是否要担心对齐?我担心这对我有用(至少对于某些数据类型和内部数组大小),但它不可移植. >此代码是否可移植? 解决方法
1理论上没有.编译器可能决定向my_inner_array添加填充.在实践中,我没有看到编译器为其中包含数组的结构添加填充的原因.在这种情况下,没有对齐问题创建这样的结构的数组.您可以使用编译时断言:
typedef int my_inner_array_array[3]; BOOST_STATIC_ASSERT(sizeof(my_inner_array) == sizeof(my_inner_array_array)); 4如果没有虚拟方法,它应该没有任何区别. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |