我需要一个二维数组,其中填充了不同派生类型的实例,我的代码如下所示:
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()
中存在某种形式的内存泄漏。
我的问题是:如何正确创建派生类的二维数组?
答案 0 :(得分:1)
正如评论中提到的b[1]
在您的示例中超出界限。
通常std::array
(以及C-array,std::vector
和其他)长度为n
的人可以在其上使用索引0, .., n - 1
。