0

我有一个看起来像这样的课程

class A
{
    int b;

    void B()
    {
        int c;
    } 
}


int main()
{
    A asdf;

    A fdsa = new A();
}

A 类的 asdf 和 fdsa 实例有什么区别?在这两种情况下,哪个进入堆栈,哪个进入堆?

类 A 中的 b 变量是一个全局变量,无论类如何声明,都应该在堆中获得一个空间,对吗?

函数 B 的副本是否也分配给堆并从那里执行?

4

4 回答 4

2

asdf在进入堆时fdsa进入堆栈。

于 2013-10-26T07:03:44.980 回答
1

假设fsda是一个声明为A*(即一个指针):

  • asdf.b在堆栈上。
  • fsda->b在堆上。
  • 每当您调用A::B()时,c都会进入堆栈。
于 2013-10-26T07:05:14.917 回答
1

首先 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

希望这可以帮助

于 2013-10-26T07:05:30.433 回答
1
于 2013-10-26T07:57:52.950 回答