在共享内存中复制char *

时间:2011-02-01 18:16:41

标签: c++ boost shared-memory

我想知道我是否可以在文件中写入(带有boost的共享内存)char *。我已经创建了一个模板,并且可以使用“int”和“string”工作正常,但是使用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);

也许只是我不能写指针......我不确定......

提前致谢

1 个答案:

答案 0 :(得分:1)

而不是template<class T>考虑template<typename T> ...但我会简单地使用std::string,除非您必须专门支持char *