Vad*_*dim 2 c# c++ stack struct class
在C#中,类存储在堆中,而结构存储在堆栈中.
在C++类和strucs中是否以相同的方式存储(假设我静态地创建我的类和结构,并且每个类或结构的成员都不是由new分配的)?
请使用下面的代码片段解释一下:
class B
{
int b;
}
class C
{
int c;
}
class A
{
B b;
C c;
int x;
}
struct SB
{
int sb;
}
struct SC
{
int sc;
}
struct SA
{
SB sb;
SC sc;
int x;
}
void main()
{
A a1;
A *a2 = new A;
SA sa1;
SA *sa2 = new SA;
}
Run Code Online (Sandbox Code Playgroud)
结构的存储方式与存储类的方式没有(必要的)差异.事实上,C++中结构和类之间的唯一区别是,默认情况下,struct成员是公共的,而类成员是私有的.
与任何其他类型的对象一样,类或结构类型的对象具有存储持续时间,该持续时间由其创建方式决定.
在函数内声明的对象的生命周期限于封闭块; 这通常通过将其存储在堆栈上来实现.
在函数外部或使用static关键字声明的对象具有在整个程序执行期间延伸的生命周期; 这可以通过将其存储在数据段中来实现.
由new操作员(或malloc()调用)分配的对象存在,直到它为deleted(或free()ed); 这些对象分配在"免费商店"中,有时非正式地称为"堆".
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |