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

C++ में स्टैक और हीप मेमोरी आवंटन ऑब्जेक्ट निर्माण को कैसे प्रभावित करते हैं?

2024-11-20 को प्रकाशित
ब्राउज़ करें:117

How Do Stack and Heap Memory Allocation Impact Object Creation in C  ?

हीप बनाम स्टैक ऑब्जेक्ट निर्माण: एक गहरा गोता

सी में, ऑब्जेक्ट निर्माण को स्टैक-आधारित या हीप के रूप में वर्गीकृत किया जा सकता है- आधारित। हालाँकि इन दो प्रकार के निर्माण के लिए वाक्यविन्यास थोड़ा भिन्न है, अंतर्निहित मेमोरी प्रबंधन सिद्धांतों को समझना आवश्यक है।

स्टैक-आधारित ऑब्जेक्ट

कोड स्निपेट प्रदान किया गया, ऑब्जेक्ट o;, फ़ंक्शन के स्टैक पर एक ऑब्जेक्ट आवंटित करता है। स्वचालित भंडारण अवधि के साथ, ये ऑब्जेक्ट फ़ंक्शन के निष्पादन के दौरान स्टैक पर रहते हैं और फ़ंक्शन रिटर्न पर नष्ट हो जाते हैं। पॉइंटर ओ स्टैक पर ऑब्जेक्ट का पता संग्रहीत करता है। ओ; ओ = नई वस्तु();। पहली पंक्ति में, पॉइंटर ओ को स्टैक पर आवंटित किया जाता है, जबकि वास्तविक ऑब्जेक्ट नए ऑपरेटर का उपयोग करके दूसरी पंक्ति में ढेर पर बनाया जाता है। सूचक ओ अब ढेर-आवंटित वस्तु की ओर इशारा करता है। सी मानक. इसके बजाय, मानक भंडारण अवधि की अवधारणा का परिचय देता है, जो स्वचालित, गतिशील, स्थिर या थ्रेड-स्थानीय हो सकता है।

स्वचालित भंडारण, आमतौर पर स्टैक पर लागू किया जाता है, स्थानीय चर और कुछ प्रकार की वस्तुओं के लिए उपयोग किया जाता है . दूसरी ओर, स्टेटिक स्टोरेज आमतौर पर स्टैक या हीप से जुड़ा नहीं होता है बल्कि एक अलग मेमोरी क्षेत्र में रहता है। सदस्य चर उन वस्तुओं की भंडारण अवधि प्राप्त करते हैं जिनसे वे संबंधित हैं।

एक उदाहरण उदाहरण

निम्न कोड पर विचार करें:struct Foo { वस्तु ओ; }; फू फू; मुख्य प्रवेश बिंदु() { फू एफ; फू* पी = नया फू; फू* पीएफ = &एफ; }

foo.o: स्थिर भंडारण, एक अलग मेमोरी क्षेत्र में रहता है।

f.o: स्वचालित भंडारण, स्टैक पर स्थित है।

p->o : गतिशील भंडारण, ढेर पर आवंटित।

pf->o: f.o के समान ऑब्जेक्ट को इंगित करता है, जिसमें स्वचालित है भंडारण।

struct Foo {
    Object o;
};

Foo foo;

int main() {
    Foo f;
    Foo* p = new Foo;
    Foo* pf = &f;
}
    निष्कर्ष में, सी में ऑब्जेक्ट निर्माण को समझना परे जाता है ढेर बनाम ढेर का सरल द्वंद्व। भंडारण अवधि को समझकर और उस संदर्भ पर विचार करके जिसमें वस्तुओं को परिभाषित किया गया है, डेवलपर्स मेमोरी आवंटन को प्रभावी ढंग से प्रबंधित कर सकते हैं और संभावित मेमोरी-संबंधी समस्याओं से बच सकते हैं।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3