0

对于我的项目,我正在使用 C++ 中的匿名类,我想知道它们在内存中的分配位置。

我很确定这将在堆上分配,但我想知道其他人是否有更详细的信息。

4

2 回答 2

3

正如所指出的,没有分配到任何地方。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;
}
于 2012-12-05T11:44:59.997 回答
1

如果匿名类是另一个类或结构的一部分,那么它将与周围的类或结构一起分配,无论是在堆上还是在堆栈上。

如果匿名类是全局变量,它会与其他全局变量一起存储。

如果匿名类是局部变量,它会与定义它的函数的其他局部变量一起存储在堆栈中。

于 2012-12-05T11:25:47.143 回答