2008-12-03 6 views
46

नीचे कार्यक्रम में:एक स्थैतिक चर के लिए स्मृति आवंटित कैसे किया जाता है?

class Main 
{ 
    static string staticVariable = "Static Variable"; 
    string instanceVariable = "Instance Variable"; 

    public Main(){} 
} 

instanceVariable स्मृति वस्तु उदाहरण के लिए आवंटित अंदर संग्रहीत किया जाएगा। staticVariable कहां संग्रहीत किया जाएगा, क्या यह ऑब्जेक्ट इंस्टेंस में या कहीं और संग्रहीत है? अगर यह कहीं और संग्रहीत है, तो स्मृति स्थान कैसे जुड़े हुए हैं?

उत्तर

10

स्थैतिक चर के लिए मेमोरी सामान्य रूप से कुछ रूट (और छुपा) object[] में आयोजित की जाती है। यह WinDbg (एसओएस के साथ) में ऑब्जेक्ट पर gcroot कर सकता है।

बस जोड़ने के लिए, ये संदर्भ कभी भी जीसीएड नहीं हो सकते हैं (जब तक कि आप फ़ील्ड को शून्य न करें), जैसा कि मैंने हाल ही में खोजा था।

0

उदाहरण के लिए वैश्विक चर के साथ वैश्विक मेमोरी स्पेस में सी ++ स्टेइक चर आवंटित किए गए हैं। कंपाइलर यह जानने के लिए विशेष नामकरण सम्मेलन का उपयोग करता है कि यह चर वर्ग से संबंधित है।