0

我有这样的共享记忆

struct MEMORY {
char * type;
int number;
}

现在在代码中我让它共享一切可能工作但其他进程看不到指针指向什么我如何在共享内存中使用指针?

4

1 回答 1

0

您需要确保共享内存连接到所有进程地址空间中的相同地址。否则,正如您可以想象的那样,指针值最终在不同的进程中意味着不同的东西。

你用什么共享内存?mmap 还是 shm?它是 mmap 调用中的第一个参数。

如果您无法确保所有进程中的地址空间相同,则另一种方法是仅使用我们的偏移量。每个进程只是从附加共享内存的基地址偏移。

编辑:啊......也许你说的是“char * type”是一些任意指针。请记住,其他进程只能看到共享内存中的内容。所有其他内存位置(指针值)都无法访问。因此,要使该指针起作用,它必须指向共享内存中的某些内容而不仅仅是任意指针。那,您需要确保共享内存在所有进程中都附加到相同的地址。

于 2013-04-10T21:49:55.953 回答