可能是在C++中被视为"正在堆栈"的堆上创建的对象?

bar*_*kin 0 c++ heap stack memory-management

有代码:

struct FooBar
{
  FooBar()
  {
    MyObject obj;

    /// when c-tor is ended, obj must be deleted through d-tor call
  }
};
...
FooBar* fooBar(new FooBar);
Run Code Online (Sandbox Code Playgroud)

fooBar在堆上分配.但是对象MyObject obj里面FooBar的构造函数不知道它的创建位置.那么可以在被处理MyObject的上下文中实例化FooBar它就像在堆栈中创建的那样?

堆上分配的对象是否有自己的堆栈?这种堆栈的大小是多少?

Mat*_*Mat 6

obj在你的例子中被分配在堆栈中("普通"堆栈,在调用的代码中使用的"相同" new FooBar- 假设你的环境有一个堆栈开始).

这一事实this指向堆上的地方不会改变一个事实,即构造函数是一个(相对)普通的函数调用,并使用相同的堆栈等功能.