在堆栈或堆上创建的类成员

Class members created on stack or heap?

本文关键字:成员 创建 堆栈      更新时间:2023-10-16

需要知道这样的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
}

这一切都归结于如何创建父对象。

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
    // ...
}

堆和堆栈当然是一个实现细节,但在这种情况下,我认为指定它是公平的。

数组n是类Matrix的直接成员,因此此类型的任何对象实例都直接包含n的数据。特别是,如果在动态分配的内存中创建一个动态对象,那么数组就会在那里;如果您创建了一个自动对象,数组也将驻留在自动内存中。