जंग क्या डेटा एक चर को पकड़ती है जिसने इसे एक संरचना सौंपी है

Jan 16 2021

यदि हमारे पास निम्नलिखित कोड है:

struct Person {
    age: i32
}

fn main() {
    let person =  Person{age : 52};
}

मुझे पता है कि संरचना और सभी का उपयोग कैसे करें लेकिन वास्तव में व्यक्ति चर के अंदर क्या है?

क्या यह संरचना के पहले तत्व का सूचक है? (क्योंकि सभी तत्व सन्निहित हैं (?) इसलिए कंपाइलर को पता चल जाएगा कि सभी तत्व कहाँ हैं)

जवाब

5 Acorn Jan 16 2021 at 21:03

वास्तव में व्यक्ति चर के अंदर क्या है?

ageकुल 4 बाइट्स के लिए एकमात्र चीज़ "अंदर" है ।

क्या यह संरचना के पहले तत्व का सूचक है?

नहीं, यह पॉइंटर नहीं है। यह केवल मूल्य ही है, जिसका अर्थ है कि इसे वर्तमान फ्रेम / फ़ंक्शन के ढेर में संग्रहीत किया जाएगा, व्यावहारिक रूप से बोलना (संकलक इसे पूरी तरह से मेमोरी से निकाल सकता है या इसका उपयोग भी नहीं कर सकता है, अगर अवलोकन योग्य व्यवहार में बदलाव नहीं होता है, लेकिन वह एक अनुकूलन है: वैचारिक रूप से, वैरिएबल को स्टैक में रखा गया है)।

(क्योंकि सभी तत्व सन्निहित हैं (?) इसलिए कंपाइलर को पता चल जाएगा कि सभी तत्व कहाँ हैं)

अधिकांश संकलित भाषाओं में कंपाइलर हमेशा सभी प्रकारों (विशेष मामलों को छोड़कर) का सटीक लेआउट जानता है। यही कारण है कि समय से पहले उन भाषाओं में कई अनुकूलन किए जा सकते हैं। यह जानकारी आम तौर पर सिस्टम प्रोग्रामिंग भाषाओं में खारिज कर दी जाती है, यही कारण है कि वे आम तौर पर प्रतिबिंब का समर्थन नहीं करते हैं और उन्हें स्रोत कोड में वापस विघटित करना काफी कठिन है।