我们什么时候应该使用packize来指定结构布局?

时间:2012-02-08 15:39:45

标签: c++ c visual-c++

有时我认为我们可以指定包大小来指定结构的布局。如果有任何情况我们必须指定包装尺寸吗?

4 个答案:

答案 0 :(得分:3)

当您需要内存布局以完全匹配其他地方定义的二进制格式时,例如。文件格式或网络协议。

答案 1 :(得分:1)

通常应该避免这种情况。适合的边缘情况是使用结构在各种体系结构的机器之间进行通信(例如,通过网络传递的数据)。但是,即使在这种情况下,您也必须了解所有支持任何对齐问题的架构(例如,如果它只允许访问四字边界)。

答案 2 :(得分:0)

我唯一一次使用它是因为我有VB程序调用C ++ DLL。结构是否匹配或不起作用。

答案 3 :(得分:0)

如果您正在谈论#pragma pack,则用于指定data alignment。如果要获取结构的大小(例如,用于内存分配),请使用sizeof运算符。

structSize = sizeof( myStructType );