fyq*_*h95 2 c++ heap-memory stack-memory
我有以下C++代码:
struct B {
int c;
int d;
}
struct A {
int a;
B x;
}
int main() {
A * ptr = new A;
ptr->a = 1;
ptr->x.c = 2;
ptr->x.d = 23;
// a lot of lines of codes later ...
// Will the following values be guranteed?
cout << ptr->x.c << endl;
cout << ptr->x.d << endl;
}
Run Code Online (Sandbox Code Playgroud)
在堆上声明一个新的"struct A"后,ptr-> x会在堆栈还是堆上声明?如果我希望x在堆上,我必须将属性x声明为指针(因此,用"new"初始化它)?
x是...的成员A.它实际上是每个A物体的一部分,类似于你手臂在身体上的一部分.因此,无论A对象在何处,在堆栈上,堆中,还是在其他任何地方,也就是其x成员所在的位置.所以回答这个问题:
如果我希望x在堆上,我必须将属性x声明为指针(因此,用"new"初始化它)?
不会.如果A它拥有它,它将在堆上.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |