gpt4 book ai didi

c++ - boost::multi_array 内存管理和作用域

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:55 26 4
gpt4 key购买 nike

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

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

特别是,我想使用我的数据切片( View )的拷贝。因此我想做这样的事情:

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 使用智能指针或引用计数来保持跟踪就可以了?

最佳答案

multi_array 拥有内存。

array_view 拥有内存。

不共享所有权。

您的代码不会正常工作。

关于c++ - boost::multi_array 内存管理和作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com