需要知道是否会在堆栈中或堆上创建这样的3d矩阵,以及它是否在堆栈上如何新建它并正确初始化默认值(memset)
class Matrix {
protected:
int n[9000][420]; // is stack or heap if VVV is pointer?
};
void main()
{
Matrix* t = new Matrix(); // created on heap
}
答案 0 :(得分:5)
这一切都取决于你如何创建父对象。
MyClass {
int n[10];
};
int main(...) {
MyClass *c1 = new MyClass; // everything allocated on heap,
// but c1 itself is automatic
MyClass c2; // everything allocated on stack
// ...
}
堆和堆栈当然是一个实现细节,但在这种情况下我认为指定是公平的。
答案 1 :(得分:0)
数组n
是类Matrix
的直接成员,因此此类型的任何对象实例都直接包含n
的数据。特别是,如果在动态分配的内存中创建动态对象,那么数组将在那里;如果你创建了一个自动对象,那么该数组也将驻留在自动内存中。