如何将shm对象指向另一个shm对象

时间:2012-09-26 16:34:15

标签: c++ object memory pointers shared

您好我已经知道如果我有一个共享内存(c ++)类对象,那么添加成员变量是没有意义的,如果这个指针将在不相关的进程中用于访问同一个东西。但是如何才能在共享内存中创建链表。假设一个shm对象指向另一个shm对象。难道这不可能以任何不相关的过程可以遍历shm内的链的方式实现。如果有可能,那怎么样?

1 个答案:

答案 0 :(得分:0)

好的,我发现你可以通过例如了解所涉及结构的确切大小来测量SHM中两个结构之间的距离。因此,如果您将其放置在任意距离(最好是页面对齐),您只需将距离添加到mmap返回的起始指针,这将指向第二个,第三个等。 例如:

items[i].start = (void*)((char*)items[0].start + calcoffset)