我需要一个二维数组,其中包含不同派生类型的实例,我的代码如下所示:
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()
中存在某种形式的内存泄漏。
我的问题是:如何正确创建派生类的二维数组?
最佳答案
如评论中所述,b[1]
在您的示例中超出范围。
通常 std::array
(以及 C 数组、std::vector
和其他)长度为 n
允许您在其上使用索引 0, .., n - 1
。
关于c++ - 带 shared_ptr 的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843825/