"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ ऑब्जेक्ट इंस्टेंटिएशन: स्टैक बनाम हीप: 'नया' या 'नया' नहीं?

C++ ऑब्जेक्ट इंस्टेंटिएशन: स्टैक बनाम हीप: 'नया' या 'नया' नहीं?

2024-12-21 को प्रकाशित
ब्राउज़ करें:121

C   Object Instantiation:  Stack vs. Heap: `new` or Not `new`?

ऑब्जेक्ट्स को इंस्टेंटिएट करना: नए के साथ या उसके बिना

सी में ऑब्जेक्ट बनाते समय, प्रोग्रामर या तो "नए" ऑपरेटर का उपयोग कर सकते हैं या उन्हें सीधे इंस्टेंटिएट कर सकते हैं इसके बिना. जबकि दोनों दृष्टिकोण ऑब्जेक्ट बनाते हैं, वे कई प्रमुख पहलुओं में भिन्न होते हैं। यह आम तौर पर स्टैक पर किया जाता है और इसके परिणामस्वरूप स्वचालित जीवनकाल वाला ऑब्जेक्ट प्राप्त होता है। ऑब्जेक्ट परिभाषित दायरे के भीतर स्वचालित रूप से बनाया और नष्ट किया जाता है।

उदाहरण के लिए:समय टी(12, 0, 0); // t एक टाइम ऑब्जेक्ट है

उपरोक्त कोड में, "टाइम" ऑब्जेक्ट "टी" स्टैक पर बनाया गया है और इसका जीवनकाल वर्तमान दायरे से जुड़ा हुआ है।

New
Time t(12, 0, 0); // t is a Time object

किसी ऑब्जेक्ट को इंस्टेंट करने के लिए "new" का उपयोग करने से ढेर पर गतिशील रूप से इसके लिए मेमोरी आवंटित हो जाती है। यह वस्तु को उसके जीवनकाल समाप्त होने पर स्पष्ट रूप से बनाने और नष्ट करने की अनुमति देता है। पॉइंटर "टी" ऑब्जेक्ट के ढेर पते को संग्रहीत करता है।

उदाहरण के लिए:समय* टी = नया समय(12, 0, 0); // टी एक गतिशील रूप से आवंटित टाइम ऑब्जेक्ट के लिए एक सूचक है

यहां, सूचक "टी" को नव निर्मित "टाइम" ऑब्जेक्ट का ढेर पता सौंपा गया है। ऑब्जेक्ट का जीवनकाल दायरे से स्वतंत्र है और तब तक बना रहता है जब तक कि इसकी मेमोरी को खाली करने के लिए "डिलीट" ऑपरेटर का उपयोग नहीं किया जाता है।

मुख्य अंतर
Time t(12, 0, 0); // t is a Time object

मेमोरी आवंटन : "नए" के बिना बनाई गई वस्तुएं स्टैक पर मेमोरी आवंटित करती हैं, जबकि "नया" स्टैक पर मेमोरी आवंटित करता है ढेर।

    जीवनकाल:
  • "नए" के बिना तत्काल बनाई गई वस्तुओं का एक स्वचालित जीवनकाल होता है, जबकि "नए" के साथ बनाई गई वस्तुओं का एक गतिशील जीवनकाल होता है और उन्हें मैन्युअल रूप से हटा दिया जाना चाहिए।
  • यह ध्यान रखना महत्वपूर्ण है कि ये अंतर कार्यान्वयन-विशिष्ट हैं, क्योंकि सी मानक स्पष्ट रूप से स्टैक और हीप व्यवहार को परिभाषित नहीं करता है। हालाँकि, अधिकांश व्यावहारिक कार्यान्वयन में, स्टैक मेमोरी का उपयोग स्वचालित ऑब्जेक्ट के लिए किया जाता है, और हीप मेमोरी का उपयोग गतिशील ऑब्जेक्ट के लिए किया जाता है।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3