我想创建一个程序,其中一个应用程序实例将创建结构并放入共享内存,如mmap
或shm
,其他实例将共享数据。
我面临的一个问题是"如何将字符串数据类型写入共享内存",根据我的知识,字符串类将在运行时分配内存,并且将在应用程序地址空间中。
我有以下结构,我想与其他过程分享......
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
数组,任何人都可以建议任何可能的解决方案......
答案 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。
这里使用策略:拆分动态和固定。