2013-03-20 26 views
0

am在OSx上使用C并使用shmget()获得两个不同程序之间使用的内存i 具有2个int值的结构 这是否意味着如果我想要27而不是它将必须是54,这将如何与指针用于结构或任何帮助将不胜感激在结构中使用Shmget()in c

+0

两个“int”值的结构通常为8或16个字节大(取决于您是在32位还是64位平台上)。数字27和54来自哪里? – 2013-03-20 12:40:48

+0

我的27/54其中int的数量忘记了int的大小,因为我只能看到与char – Milmar 2013-03-20 12:43:59

回答

1

不,您需要在结构上使用sizeof。你不能保证实现将如何在结构中填充值,所以你不要假设它们的大小。另外,如果由于向结构添加成员而导致大小更改,内存分配仍然可以正常工作。

然后使用sizeof中的值乘以打算在共享内存区域中使用的结构实例的数量。

+0

一起使用的shmget,这意味着函数的大小将允许程序根据结构的大小增加和如果是这样怎么会这样做 – Milmar 2013-03-20 12:44:56

+0

@Milmar我不知道我是否理解上面的其他问题正确。也许提供一个当前你正在尝试做什么的例子会有所帮助。 – 2013-03-20 12:46:20

+0

因此,对于第一个结构位置,我添加下列值(1,2)然后我如何才能到达下一个存储位置,我知道一个char值我可以将我的指针增加1以获得下一个位置 – Milmar 2013-03-20 12:49:14