新的内部放置新位置?

时间:2017-11-13 13:41:31

标签: c++ memory-mapped-files placement-new

我尝试使用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;

这很好用。但我的问题是:

  1. 如何在data内动态分配trace_queue成员指针,而不是具有恒定大小,以便分配的内存仍然适合通过boost给我的内存?
  2. 新文件大小是多少? sizeof(trace_queue) + data_count*size_of(float) - sizeof(float*)

0 个答案:

没有答案