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它就像在堆栈中创建的那样?
堆上分配的对象是否有自己的堆栈?这种堆栈的大小是多少?
obj在你的例子中被分配在堆栈中("普通"堆栈,在调用的代码中使用的"相同" new FooBar- 假设你的环境有一个堆栈开始).
这一事实this指向堆上的地方不会改变一个事实,即构造函数是一个(相对)普通的函数调用,并使用相同的堆栈等功能.