lvalues
, rvalues
और उनके लिए स्मृति आवंटन सीखने की कोशिश कर रहा है। तो बहुत सी सीखने वाली सामग्री के साथ अराजकता थोड़ी सी है।स्मृति में संग्रहीत सी ++ में कितने रैल्यू?
एक rvalue
एक ऐसा मान है जो केवल उस अभिव्यक्ति की सीमाओं में मौजूद होना चाहिए जहां इसे बनाया गया था (कम से कम C++ 11 तक)। तो इसमें स्मृति का एक पता और ब्लॉक है जो यह कब्जा करता है। लेकिन परिभाषा के अनुसार हमें rvalue
का पता नहीं मिल सकता है, क्योंकि यह lvalue
के विपरीत एक अस्थायी वस्तु है। लेकिन सी ++ 11 से पहले भी हम इसे rvalue
का पता किसी फ़ंक्शन से वापस करके और इसे एक कॉन्स्ट संदर्भ प्रकार में सहेजकर प्राप्त कर पाए थे (ओह, मुझे लगता है कि कोई पता नहीं बल्कि एक मान है)।
तो, अधिक सटीक, rvalue
आवंटन कार्य कैसे करता है? प्रोग्राम या ओएस कितनी देर तक स्मृति की उस जगह को याद रखता है जहां rvalue
बनाया गया था और आवंटित के रूप में चिह्नित किया गया था और कोई अन्य वस्तु अपना स्थान नहीं ले सकती है?
मैं इसे कैसे देखता हूं, अब rvalues
lvalues
जैसा संग्रहीत किया जाता है लेकिन हमारे पास बस उन्हें एक्सेस करने के अन्य अधिकार हैं। और उनके पास अन्य प्रकार के डीलोकेशन हैं - lvalues
के लिए दायरे से बाहर निकलने के लिए rvalues
अभिव्यक्ति की सीमाओं में अस्तित्व में अनुकूलित किया जा सकता है या जब तक इसके कोई और लिंक नहीं हो जाते हैं।
लाइवल और रावल अभिव्यक्ति श्रेणियां हैं। वे किसी भी भंडारण का उपयोग नहीं करते हैं। स्टोरेज का उपयोग * ऑब्जेक्ट्स * क्या है। (और कभी-कभी, संदर्भ)। प्रतीत होता है कि आप "अस्थायी वस्तु" का अर्थ रखते हैं तो आप "रावल्यू" लिख रहे हैं। –
मुझे नहीं लगता कि रावलों को बिल्कुल पता होना चाहिए। उनका पंजीकरण केवल रजिस्टरों में किया जा सकता है। –
@ एमएम, आप सही हैं। –