2011-03-14 21 views
1

(C++) 静的変数または非静的変数はどこにありますか?私は記憶を意味します。C++静的非静的

静的変数または非静的変数はいつ初期化されますか?

私の考えを明確にするのに助けが必要です。 ありがとうございました!

とは?同じ?

+0

多分あなたはここで興味深いものがあります:http://stackoverflow.com/questions/5162580/what-happens-when-a-computer-program-runs – Muggen

答えて

11

コンパイラ(またはリンカーまたはローダー)がそれらをメモリに格納する場所はどこでもかまいませんが、CおよびC++標準ではその詳細レベルが必須ではありません。それらは、の動作のみを要求します。

通常、静的メンバーは、プログラムの起動時(コンパイル時に、単に初期化された状態でロードされるように)、または最初の使用の直前に1回初期化されます。

+0

非常によく慎重に言いました)。 –

0

静的でないメンバーは、オブジェクトのインスタンス化方法によって異なります。

class foo 
{ 
    int num ; // Non-Static member 
    // .... 
}; 

foo obj ; // In this case `num` resides on stack. In fact, obj it self resides on stack 
foo *temp = new foo; // In this case `num` resides on heap or in memory location acquired from the free store. 

静的メンバーについてはわかりません。プログラムは

非静力学は、あなたがそれらを置く場所、これまで行って終了するまで

0

静力学は、コンパイラによって決定される傾向がある、グローバルと同じ場所に行くと、プログラムがロードされるときに作成され、存続します(スタックまたはヒープ上)

関連する問題