none
求助学习C++标准库的内存分配器的编写 RRS feed

  • 问题

  •    最近有一个需求要用到共享内存,在共享内存上来存储数据结构给多个进程读,写。  本来用标准库里的map之类的就非常好了,但是标准库的map里面的内存分配是在进程的堆上分配的。 我大概知道要通过自定义的allocter类来实现这个需求, 就是在共享内存上分配内存。 我大概翻了翻c++ primer 3nd 好像居然没有这方面的用法。 求大家能介绍点文章或者书籍的具体页数来使我懂得这个allocter的编写。

       大概思路就是申请2块共享内存, 一块很小的用来保存自己定义的SharedMap(标准库map的简单封装)的对象的内容。这个用new(address)就可以搞定。 
       一块大的共享内存, SharedMap中通过new申请的数据都在这块共享内存中分配。

       整个大概的结构就是, 通过第一块的小的共享内存的地址 强制转换为 SharedMap* , 来操作第二块的共享内存中保存的数据。

       问题是我不知道怎么实现map的内存申请new , 如何封装在共享内存上分配数据。(windows内存映射基本的api懂,只是c++的标准库的封装把我拦住了)

    2012年6月8日 7:59

答案

全部回复