0
我想知道我是否可以在文件(帶有boost的共享內存)中寫入char *。我創建了一個模板,並且對「int」和「string」工作正常,但使用char *時,我可以在內存中訪問它們,當我執行程序時,數據不會像以前那樣存儲在文件中與整數和字符串。複製char *在共享內存中提升
代表一塊代碼將是:(T將是char *)
//DECLARATIONS
MyMap *mymap;
managed_mapped_file seg = managed_mapped_file(open_or_create, tableName, tablesize);
mymap = seg->find_or_construct<MyMap>("MyMap") //object name
(std::less<T>() //first constructor parameter
,*alloc_inst); //second constructor parameter
//THE METHOD TO ADD THE ENTRIES
template<class T>
void ShareDB<T>::add_ref_info_to_db (const T &Symbol_Index , const std::string &a_info){
MyMap::iterator res = mymap->find(Symbol_Index);
mymap->insert(std::pair<const T, shared_string>(Symbol_Index, localSymbol));
,所以我打電話給模板這樣的:
ShareDB <char *> ex;
ex.openDB(dataBaseName,"TestMutex", 196608, true);
ex.add_ref_info_to_db (a,ex.RefInfoRecord);
也許這是我能不寫指針...我不確定...
在此先感謝
您正在使用一個指針作爲關鍵的地圖,這是沒有意義的。而不是`char *`作爲鍵,使用`std :: string`作爲你的地圖的鍵。此外,沒有看到你的`MyMap :: insert()`函數用`char *`做了什麼,很難說出什麼問題...... – Nim 2011-02-01 18:46:36
我同意Nim更相關的代碼會有所幫助,insert() ,實際寫入值的代碼,Symbol_Index的任何複製或賦值等。 – AJG85 2011-02-01 19:56:32