2012-05-14 30 views
0

我有一个managed_shared_memory对象,它拥有定义如下的地图容器SharedMapboost ::进程间内存大小

typedef std::pair<std::string, T> ValueType; 
typedef allocator<ValueType, managed_shared_memory::segment_manager> ShmemAllocator; 
typedef map<std::string, T, std::less<std::string>, ShmemAllocator> SharedMap; 

我的问题是我需要确定我正在使用的共享内存的大小。该映射的关键字是一个未知大小的std :: string,并且该数据是未知大小的模板类型,其中每个数据的大小都不相同。

任何人都可以建议如何跟踪我正在使用的内存?

我是新的boost :: interprocess,所以任何建议都会有很大的帮助。

+0

我的建议是看我给你的前一个问题,这也解释了为什么这个代码是错误的答案,你完全忽略。 – interjay

+0

我刚刚在那里回复你。 – andre

回答

1

我使用异常处理解决了问题。我插入到地图中,直到引发bad_alloc异常。我发现异常并重新调整共享内存的大小。


我所用的方法static bool grow(const char *shmname, size_type extra_bytes)这应该是managed_shared_memory成员函数