के रूप में मैं समझता हूँ, पूर्णांक मान प्रकार है और इसलिए ढेर
आपकी समझ सही नहीं है में रहती है। मान प्रकारों को "मान प्रकार" कहा जाता है क्योंकि उन्हें मूल्य द्वारा प्रतिलिपि बनाई जाती है। संदर्भ प्रकार को "संदर्भ प्रकार" कहा जाता है क्योंकि उन्हें संदर्भ द्वारा प्रतिलिपि बनाई जाती है। यह बिल्कुल सही नहीं है कि "मूल्य प्रकार हमेशा ढेर पर रहते हैं"। यदि यह सच था, तो उन्हें "ढेर प्रकार" और "ढेर प्रकार" कहा जाएगा।
सच यह है कि यह एक कार्यान्वयन विस्तार है। विभिन्न रूपरेखा कार्यान्वयन स्टैक और ढेर का उपयोग करने के लिए चुन सकते हैं। यहां बताया गया है कि माइक्रोसॉफ्ट कार्यान्वयन कैसे करता है:
- संदर्भ प्रकार के चर के मान को ढेर स्मृति का संदर्भ है। एक संदर्भ मूल रूप से 32 बिट या 64 बिट पूर्णांक है।
- मूल्य प्रकार के चर के मान का मूल्य है।
- स्थानीय चर के मान स्टैक पर संग्रहीत किए जाते हैं जब तक कि स्थानीय चर एक इटरेटर ब्लॉक में न हों या अज्ञात विधि या लैम्ब्डा अभिव्यक्ति के बाहरी चर के बंद हो जाएं। उन मामलों में स्थानीय चर के मान ढेर पर संग्रहीत किए जाते हैं। बेशक स्थानीय चर को अनुकूलित किया जा सकता है, इस मामले में कोई भंडारण नहीं है। या शायद उन्हें अपंजीकृत किया जा सकता है, इस मामले में वे न तो ढेर और ढेर पर हैं, वे प्रोसेसर रजिस्टरों में हैं।
- संदर्भ प्रकारों और स्थिर चर के आवृत्ति चर के मान ढेर पर संग्रहीत किए जाते हैं।
क्या यह स्पष्ट है?
यह मूल्य प्रकार के लिए इंगित करता है, लेकिन यह संदर्भ (ढेर पर) नहीं है?
फ़ील्ड "ए" मूल्य प्रकार का है। यह एक क्षेत्र है, और इसलिए उस चर को ढेर पर संग्रहीत किया जाता है।
कक्षा 1 का उदाहरण बनाते समय, इसके क्षेत्र के प्रकार ढेर पर भी बनाए जाते हैं?
इंस्टेंस चर के लिए भंडारण ढेर पर है, हां।
लेकिन तब मुझे समझ में नहीं आता कि यह वास्तव में ढेर पर कब होगा क्योंकि लगभग हमेशा आपको इसे फ़ील्ड का उपयोग करने के लिए ऑब्जेक्ट का उदाहरण बनाना होगा।
यह कभी भी ढेर पर नहीं होगा। जैसा कि मैंने उपर्युक्त कहा है, स्टैक पर जाने वाली एकमात्र चीजें स्थानीय चर (और कंपाइलर-जेनरेटेड अस्थायी) हैं जो लैम्ब्डा या अज्ञात विधि के बंद-स्थानीय इलाकों में नहीं हैं और एक पुनरावर्तक ब्लॉक में नहीं हैं। और निश्चित रूप से, जिटर उन्हें पूरी तरह से ढेर से दूर रखने के लिए स्वतंत्र है और यदि नि: शुल्क रजिस्ट्रार हैं तो उन्हें रजिस्टरों में डाल दें।
लेकिन वास्तव में, मुझे पूछना है, आपको क्यों ख्याल है कि ढेर पर क्या चल रहा है और ढेर पर क्या चल रहा है? ढेर पर क्या चल रहा है वह सामान है जिसे हम सस्ते रूप से ढेर पर रख सकते हैं; बाकी सब कुछ ढेर पर चला जाता है।
स्रोत
2010-04-02 15:05:35
क्लास के नाम एक नंबर – cpalmer
साथ शुरू करने के लिए विषय से हटकर अनुमति नहीं है: आप वहाँ पर – thelost
धन्यवाद अमान्य वर्ग नाम है, निश्चित :) – Mirek