对于我的项目,我正在使用 C++ 中的匿名类,我想知道它们在内存中的分配位置。
我很确定这将在堆上分配,但我想知道其他人是否有更详细的信息。
对于我的项目,我正在使用 C++ 中的匿名类,我想知道它们在内存中的分配位置。
我很确定这将在堆上分配,但我想知道其他人是否有更详细的信息。
正如所指出的,类没有分配到任何地方。Objects是匿名类的实例,可以通过多种方式分配:
例如作为另一个对象的子对象:
struct S
{
struct {
int x, y;
} p;
};
或与类定义一起
struct
{
float x, y;
} p;
或使用decltype
:
struct S
{
struct {
int x, y;
} p;
};
void g (decltype (S::p)) {}
decltype (S::p) *f ()
{
auto p = new decltype (S::p);
g(*p);
return p;
}
如果匿名类是另一个类或结构的一部分,那么它将与周围的类或结构一起分配,无论是在堆上还是在堆栈上。
如果匿名类是全局变量,它会与其他全局变量一起存储。
如果匿名类是局部变量,它会与定义它的函数的其他局部变量一起存储在堆栈中。