共享内存中的指针 - C语言Linux

时间:2013-04-10 18:00:19

标签: c linux shared-memory

我像这样分享了内存

struct MEMORY {
char * type;
int number;
}

现在在代码中我让它共享一切正常但其他进程无法看到指针指向如何在共享内存中使用指针?

1 个答案:

答案 0 :(得分:0)

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

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

如果您无法在所有流程中确保相同的地址空间,那么另一种方法是仅限我们抵消。每个进程只是偏离附加共享内存的基址。

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