【问题标题】:boost::multi_array memory management and scopeboost::multi_array 内存管理和作用域
【发布时间】:2016-04-09 15:31:47
【问题描述】:

我正在使用 boost::multi_array 来存储一些数据。我使用视图来处理数据,因为我需要处理不同维度的数据切片。

我的问题是, boost::multi_array 的内存是如何管理的?

特别是,我想使用我的数据切片(视图)的副本。因此我想做这样的事情:

typedef boost::multi_array<double, 2> MyContainer;
typedef MyContainer::array_view<1>::type Slice1D;

Slice1D copy(const Slice1D & slice)
{
    MyContainer copyMemory(slice);
    Slice1D sliceCopy = copyMemory[boost::indices[0][range()]];
    return sliceCopy;
}

void main()
{
    ...
    Slice1D copySlice = copy(mySlice);
}

我想知道这是否是错误的,因为当复制函数返回时,包含副本的 multi_array 超出了范围。或者它可以因为 multi_array 使用智能指针或引用计数来跟踪?

【问题讨论】:

    标签: c++ memory-management boost boost-multi-array


    【解决方案1】:

    multi_array 拥有内存。

    array_view拥有内存。

    不存在所有权共享。

    你的代码不能正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2011-07-31
      相关资源
      最近更新 更多