C ++类成员存储

14 浏览
0 Comments

C ++类成员存储

我有一个关于C++类成员存储的问题。

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

class MyClass1{
    int a;
    int b[4];
    int c;
}

在主函数中:

int main(){
    MyClass1 class1;
    MyClass1* class_ptr1= new MyClass1();
}

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

那么class_ptr1呢?显然它是动态分配的,成员也是动态分配的,即使它们不是指针。

非常感谢。

非常感谢回复。现在我明白了,一旦类被动态分配,所有它的成员也都是动态分配的。在这种情况下,我需要做些什么来释放它们,一旦我使用完了该类?我的意思是,我只需要:

delete(class_ptr1);

还是需要先释放它的成员。

admin 更改状态以发布 2023年5月23日
0
0 Comments

\n\n在第一种情况下,对象及其成员位于自动存储中。\n在第二种情况下,对象及其成员位于动态存储中。\n你可以轻松地分别将它们称为堆栈和堆。

0
0 Comments

你提出的问题源于你不太了解C++中的类和结构体。当你声明一个类时:

class MyClass1{
    int a;
    int b[4];
    int c;
};

这个类的任何实例都将是大小等于sizeof(MyClass1)一个连续的内存块,其中每个字段都有一些相对于该块开头的偏移量。如果你思考并理解了它,那么你的问题的答案将是显而易见的。

0