2014-03-25 38 views
1

我要創建的程序,其中應用程序的一個實例將創建結構並放入共享存儲器等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

您可以使用Boost.IPC的共享內存分配器。 –

+0

謝謝@KerrekSB,我會檢查Boost庫。 – rajenpandit

+0

因爲你說你不想使用它,所以沒有答案,儘管我認爲char數組對你來說是一個解決方案。您必須提供最大長度,但您可以使界面儘可能使用std :: string。 – stefaanv

回答

0

對於字符串,您可以像這樣存儲: 個一個共享存儲器存儲固定大小成員 結構節點 { INT ID; char * desc_address; int desc_size; struct Node * child_address; int child_size; //其他一些數據類型 };

另一個共享內存存儲動態大小值: 因此,desc_address和child_address可以指向另一個Shared_Memory。

這裏使用的策略:拆分動態和固定。

相關問題