为矩阵分配一个新的内存
allocate a new memory for matrix
我有两个类:
class A
class B: class A
我想创建一个矩阵,每个指针都指向B (mat (1X2))
所以我定义了:
A **mat;
mat = new A*[1];
*mat = new B[2]; // call the constructor.
我现在有两个元素:垫[0][0],垫[0][1]。
mat[0][0]初始化,但mat[0][1]为NULL。
请帮。
如果sizeof(A) < sizeof(B)
大于A
的数组不等于B
的数组。由于在第二次分配中,您分配的具体对象大于*mat
应该指向的对象,因此当您访问第二个元素时,它不会访问第二个B
元素,而是切片到第一个。
这是我的猜测,因为你没有告诉我们太多关于A
和B
。
编辑
为了回答您的评论,我将从限制您使用的原始指针的数量开始。用向量的向量来代替。vector的每个元素都可以是指向A
的原始指针。它的运行时类型可以是B
或C
。
#include <vector>
std::vector<std::vector<A*> > mat(1, std::vector<A*>(2, (A*)0));
如果你需要指向B的指针,你不需要指定关于A的任何东西。因为B派生A,你只需要为较大的A分配空间(在本例中为B)。
对于指针矩阵,您将需要以下内容:
B *** mat;
mat = new B**[1]; //Dimension 1
mat[0] = new B*[2]; //Dimension 2 (array of pointers)
mat[0][0] = new B(); //Allocate B in [0][0]
mat[0][1] = new B(); //Allocate B in [0][1]
但如果你知道它总是1x2,只需使用以下命令:
B * mat[1][2];
相关文章:
- 重新定位图像时如何前进到下一个内存块
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 是否可以通过每次在内存中仅保存一个平铺来处理完整的平铺 tiff 图像?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 是否可以使用分配器对象来释放另一个分配器分配的内存?
- C++,一个内存块与多个内存块
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 从一个内存的一个块创建许多eigen :: vectorxd
- 如何使用任意数量的(编译时间确定的)容器创建一个内存池
- 未知错误,调试器只给我一个内存地址
- 你能给我一个内存泄漏的真实工作示例吗?
- 如何知道两个C字符串是否指向一个内存块
- 设计一个内存覆盖检测工具
- Getline返回一个内存地址
- 如何获得一个内存区域的保护标志,标志是PROT_READ /PROT_EXEC在mprotect
- c++又是一个内存泄漏问题
- 为什么我在这里得到一个内存相关的错误
- 我可以为多个向量使用一个内存池吗
- 一个内存高效的SHA1实现