c++ - boost::进程间内存大小

标签 c++ memory-management boost boost-interprocess

我有一个 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/

相关文章:

c++ - 从 QList 中删除重复的对象

c++ - 删除动态分配的二维数组

c++ - 文件支持的 Trie(或前缀树)实现

c++ - 如何在 C++ 中释放包含指向这些结构的指针数组的结构?

c++ - Boost::Test 的问题

c++ - 如何用 gcc 抑制 boost::thread 警告?

c++ - 设置菜单 UI 实现

c++ - 使用功能

c++ - 在 boost 几何体中创建实心多边形

c# - 无法将大量数据写入流