有时我认为我们可以指定包大小来指定结构的布局。如果有任何情况我们必须指定包装尺寸吗?
答案 0 :(得分:3)
当您需要内存布局以完全匹配其他地方定义的二进制格式时,例如。文件格式或网络协议。
答案 1 :(得分:1)
通常应该避免这种情况。适合的边缘情况是使用结构在各种体系结构的机器之间进行通信(例如,通过网络传递的数据)。但是,即使在这种情况下,您也必须了解所有支持任何对齐问题的架构(例如,如果它只允许访问四字边界)。
答案 2 :(得分:0)
我唯一一次使用它是因为我有VB程序调用C ++ DLL。结构是否匹配或不起作用。
答案 3 :(得分:0)
如果您正在谈论#pragma pack
,则用于指定data alignment。如果要获取结构的大小(例如,用于内存分配),请使用sizeof
运算符。
structSize = sizeof( myStructType );