boost::进程间内存大小
Posted
技术标签:
【中文标题】boost::进程间内存大小【英文标题】:boost::interprocess memory size 【发布时间】:2012-05-14 15:48:28 【问题描述】:我有一个 managed_shared_memory
对象,其中包含定义如下的地图容器 SharedMap
。
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;
我的问题是我需要确定我正在使用的共享内存的大小。 map的key是一个未知大小的std::string,数据是一个未知大小的模板类型,每个数据的大小都会变化。
谁能建议我如何跟踪我正在使用的内存?
我是 boost::interprocess 的新手,所以任何建议都会有很大帮助。
【问题讨论】:
我的建议是看看我在你之前的问题上给出的答案,它解释了为什么这段代码是错误的,而你完全忽略了。 【参考方案1】:我通过使用异常处理解决了这个问题。我插入到地图中,直到抛出 bad_alloc
异常。我捕捉到异常并重新调整共享内存的大小。
我使用的方法static bool grow(const char *shmname, size_type extra_bytes)
应该是managed_shared_memory
的成员函数
【讨论】:
以上是关于boost::进程间内存大小的主要内容,如果未能解决你的问题,请参考以下文章