C++类成员存储

pen*_*926 3 c++ memory

我刚才有一个关于c ++类成员存储的问题.

例如,我有一个这样的类:

class MyClass1{
    int a;
    int b[4];
    int c;
}
Run Code Online (Sandbox Code Playgroud)

在主要功能:

int main(){
    MyClass1 class1;
    MyClass1* class_ptr1= new MyClass1();
}
Run Code Online (Sandbox Code Playgroud)

那么成员a,b,c是如何存储的?对于class1,我认为所有成员都在堆栈中分配了一个空间,甚至是数组b.

那么class_ptr1怎么样?显然它是动态分配的,也是动态分配的成员,甚至认为它们不是指针.

非常感谢.

非常感谢回复.现在我明白,一旦动态分配了类,它的所有成员也会被动态分配.在这种情况下,一旦我使用完课程,我是否需要做任何事情来解除分配?我的意思是,它只是:

delete(class_ptr1);
Run Code Online (Sandbox Code Playgroud)

或者我需要先释放其成员.

Sla*_*ica 6

您的问题来自于您不太了解C++中的类/结构.声明一个类时:

class MyClass1{
    int a;
    int b[4];
    int c;
};
Run Code Online (Sandbox Code Playgroud)

此类的任何实例的one continuous block of memory大小将等于sizeof(MyClass1)每个字段将具有该块的开头的一些偏移量的位置.如果你仔细想想并理解它,回答你的问题就会很明显.