我尝试使用boost进程设置内存映射文件。以下类包含映射数据&一些互斥/条件变量。
struct trace_queue
{
trace_queue()
: parent_done(true)
, sim_end(false)
{}
boost::interprocess::interprocess_mutex mutex;
boost::interprocess::interprocess_condition parent_running;
boost::interprocess::interprocess_condition child_running;
bool parent_done;
bool sim_end;
float data[12]; // Want to dynamically allocate this.
};
我创建了一个大小为sizeof(trace_queue)
的文件,映射它然后我将类实例化为boost赋予我的映射内存:
trace_queue * tq = new (addr) trace_queue;
这很好用。但我的问题是:
data
内动态分配trace_queue
成员指针,而不是具有恒定大小,以便分配的内存仍然适合通过boost给我的内存?sizeof(trace_queue) + data_count*size_of(float) - sizeof(float*)
?