我有一个保存地图容器SharedMap
的managed_shared_memory
对象,其定义如下。
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,所以任何建议都会有很大的帮助。
发布于 2012-05-15 20:31:59
我通过使用异常处理解决了这个问题。我插入到映射中,直到抛出bad_alloc
异常。我捕获了异常并重新调整了共享内存的大小。
我使用了static bool grow(const char *shmname, size_type extra_bytes)
方法,它应该是managed_shared_memory
的成员函数
https://stackoverflow.com/questions/10586699
复制