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
于 2013-10-26T07:57:52.950 に答える
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 に答える