c++ - 带 shared_ptr 的二维数组

标签 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() 中存在某种形式的内存泄漏。

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

最佳答案

如评论中所述,b[1] 在您的示例中超出范围。

通常 std::array(以及 C 数组、std::vector 和其他)长度为 n允许您在其上使用索引 0, .., n - 1

关于c++ - 带 shared_ptr 的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843825/

相关文章:

Java 2D boolean 数组航空公司程序,完全难住了

c++ - 默认复制构造函数处理const吗?

c++ - 替代 CString::Format?

c++ - 如何在标准 C++ 中递归地遍历每个文件/目录?

java - 获取数组中的一些项目

c - 如何计算C中相同字符的个数?

c++ - 返回指向链表类中结构的指针

c++ - 如何增加指向 char 数组的指针的位置?

c++ - Cygwin 下 std::thread 的意外结果

c++ - 将一系列图像写入缓冲存储器的最佳方法