我有一个看起来像这样的课程
class A
{
int b;
void B()
{
int c;
}
}
int main()
{
A asdf;
A fdsa = new A();
}
A 类的 asdf 和 fdsa 实例有什么区别?在这两种情况下,哪个进入堆栈,哪个进入堆?
类 A 中的 b 变量是一个全局变量,无论类如何声明,都应该在堆中获得一个空间,对吗?
函数 B 的副本是否也分配给堆并从那里执行?
asdf在进入堆时fdsa进入堆栈。
假设fsda是一个声明为A*(即一个指针):
asdf.b在堆栈上。fsda->b在堆上。A::B()时,c都会进入堆栈。首先 fdsa 应该是一个指针。
A a_on_stack; // Destroys when going out of scope
A* a_on_heap = new A(); // Need to call "delete a_on_head;" to remove from memory
希望这可以帮助