C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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相同的条目?或者我是否要担心对齐?我担心这对我有用(至少对于某些数据类型和内部数组大小),但它不可移植.

>此代码是否可移植?
>如果没有,有没有办法让它发挥作用?
>如果没有,你有什么建议我能做什么?
>如果my_inner_array不是POD结构,但它包含一些方法(只要该类不包含任何虚方法),它是否会改变任何内容

解决方法

1理论上没有.编译器可能决定向my_inner_array添加填充.在实践中,我没有看到编译器为其中包含数组的结构添加填充的原因.在这种情况下,没有对齐问题创建这样的结构的数组.您可以使用编译时断言:

typedef int my_inner_array_arraY[3];
BOOST_STATIC_ASSERT(sizeof(my_inner_array) == sizeof(my_inner_array_array));

4如果没有虚拟方法,它应该没有任何区别.

大佬总结

以上是大佬教程为你收集整理的C对齐多维数组结构全部内容,希望文章能够帮你解决C对齐多维数组结构所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。