使用shared_ptr的二维数组

时间:2015-04-24 09:32:49

标签: c++ arrays pointers

我需要一个二维数组,其中填充了不同派生类型的实例,我的代码如下所示:

std::array<std::array<std::shared_ptr<Base>, 1>, 1> b;
b[1][1] = std::shared_ptr<Base>(new Derived(x, y));

代码编译但在执行第二行期间std::__shared_weak_count::__release_shared()中存在某种形式的内存泄漏。

我的问题是:如何正确创建派生类的二维数组?

1 个答案:

答案 0 :(得分:1)

正如评论中提到的b[1]在您的示例中超出界限。

通常std::array(以及C-array,std::vector和其他)长度为n的人可以在其上使用索引0, .., n - 1