如何在共享内存中存储字符串数据类型?

时间:2014-03-25 12:36:57

标签: c++ shared-memory mmap

我想创建一个程序,其中一个应用程序实例将创建结构并放入共享内存,如mmapshm,其他实例将共享数据。

我面临的一个问题是"如何将字符串数据类型写入共享内存",根据我的知识,字符串类将在运行时分配内存,并且将在应用程序地址空间中。

我有以下结构,我想与其他过程分享......

struct Node
{
   int id;
   string description;
   struct Node* child[10];
   //some other data types
};

如果我使用的结构是

,我可以在流程之间共享数据
struct Node
{
   int id;
   char description[20];
   struct Node* child[10];
   //some other data types
};

但我不想使用char数组,任何人都可以建议任何可能的解决方案......

1 个答案:

答案 0 :(得分:0)

对于字符串,您可以这样存储: 一个共享内存存储固定大小的成员     struct Node     {        int id;        char * desc_address;        int desc_size;        struct Node * child_address;        int child_size;        //其他一些数据类型     };

另一个共享内存存储动态大小值: 所以desc_address和child_address可以指向另一个Shared_Memory。

这里使用策略:拆分动态和固定。