我刚才有一个关于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)
或者我需要先释放其成员.
您的问题来自于您不太了解C++中的类/结构.声明一个类时:
class MyClass1{
int a;
int b[4];
int c;
};
Run Code Online (Sandbox Code Playgroud)
此类的任何实例的one continuous block of memory
大小将等于sizeof(MyClass1)
每个字段将具有该块的开头的一些偏移量的位置.如果你仔细想想并理解它,回答你的问题就会很明显.
归档时间: |
|
查看次数: |
143 次 |
最近记录: |