我有一个 managed_shared_memory
对象,它包含定义如下的 map 容器 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;
我的问题是我需要确定我正在使用的共享内存的大小。映射的键是一个大小未知的 std::string,数据是一个大小未知的模板类型,其中每个数据的大小都不同。
谁能建议我如何跟踪我正在使用的内存?
我是 boost::interprocess 的新手,所以任何建议都会有很大帮助。
最佳答案
我使用异常处理解决了这个问题。我插入映射,直到抛出 bad_alloc
异常。我捕获异常并重新调整共享内存的大小。
我使用了 static bool grow(const char *shmname, size_type extra_bytes)
方法,它应该是 managed_shared_memory
的成员函数
关于c++ - boost::进程间内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586699/