Swift Academy · पाठ

स्टैक बनाम हीप: मान कहाँ रहते हैं

जानें कि स्ट्रक्चर स्टैक पर और क्लास हीप पर कैसे रहती हैं तथा इसका प्रदर्शन पर क्या प्रभाव पड़ता है।

पाठ 1, कुल 4 में से12 चरण

स्टैक बनाम हीप: मान कहाँ रहते हैं, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्वागत

स्विफ्ट के मान मेमोरी में कहाँ रहते हैं — स्टैक या हीप में — यह समझना तेज़ और पूर्वानुमेय कोड लिखने के लिए आवश्यक है।

स्टैक

स्टैक स्वचालित रूप से प्रबंधित किया जाने वाला सन्निहित मेमोरी-खंड है: • फ़ंक्शन के स्थानीय चर और पैरामीटर यहाँ रहते हैं • आवंटन O(1) है — केवल एक पॉइंटर आगे बढ़ाना होता है • दायरा समाप्त होते ही यह अपने-आप मुक्त हो जाता है • यह थ्रेड-स्थानीय होता है — प्रत्येक थ्रेड का अपना स्टैक होता है

हीप

हीप दीर्घजीवी आवंटनों के लिए साझा मेमोरी-संग्रह है: • जब ऑब्जेक्ट का जीवनकाल किसी एक दायरे से अधिक होता है, तो वे यहाँ रहते हैं • आवंटन के लिए खाली मेमोरी ढूँढ़नी पड़ती है — इसलिए यह अधिक महँगा है • क्लास के लिए ARC इसका प्रबंधन करता है • यह थ्रेडों के बीच साझा होता है — इसलिए समकालिकरण आवश्यक है

स्ट्रक्चर स्टैक पर रहते हैं

```swift func compute() { var pt = CGPoint(x: 3, y: 4) // on the stack pt.x += 1 } // pt freed automatically ``` छोटे स्ट्रक्चर कॉपी के रूप में पास किए जाते हैं — हीप का कोई अतिरिक्त खर्च नहीं होता।

क्लास हीप पर रहती हैं

```swift class Dog { var name: String init(name: String) { self.name = name } } var d = Dog(name: "Rex") // Dog instance on heap // 'd' is a pointer on the stack ```

बड़े स्ट्रक्चर हीप का उपयोग कर सकते हैं

बड़े स्ट्रक्चर (सरणियाँ, स्ट्रिंग और बड़े मान प्रकार) मान प्रकारों की तरह व्यवहार करने के बावजूद भीतर COW और हीप संग्रहण का उपयोग करते हैं: ```swift var arr = [Int](repeating: 0, count: 10_000) // The array's buffer is on the heap; 'arr' itself is a stack value ```

क्लोज़र में मान कैप्चर करना

जब कोई क्लोज़र ऐसे मान-प्रकार के चर को कैप्चर करता है जिसे दायरे से अधिक समय तक जीवित रहना है, तो स्विफ्ट उसे हीप पर एक बॉक्स में रखता है: ```swift var count = 0 let increment = { count += 1 } // count captured in a heap box increment() print(count) // 1 ```

प्रोटोकॉल अस्तित्वात्मक बॉक्सिंग

`any Protocol` चर में छोटे मान प्रकारों को संग्रहीत करने पर हीप आवंटन हो सकता है (अस्तित्वात्मक बॉक्सिंग): ```swift var shape: any Shape = Circle(radius: 5) // may allocate on heap ``` छोटे प्रकार (≤3 शब्द) सीधे रखे जाते हैं; बड़े प्रकारों को बॉक्स में रखा जाता है।

आवंटनों को मापना

हीप आवंटन देखने के लिए इंस्ट्रूमेंट्स के Allocations टेम्पलेट का उपयोग करें: 1. प्रोफ़ाइल > आवंटन 2. क्लास या श्रेणी के अनुसार फ़िल्टर करें 3. `alloc` बनाम `dealloc` की गणनाओं पर नज़र रखें लूप में आवंटनों की अधिक संख्या अक्सर अनपेक्षित बॉक्सिंग का संकेत होती है।

डिज़ाइन संबंधी प्रभाव

• कम समय तक रहने वाले डेटा-धारक प्रकारों के लिए स्ट्रक्चर को प्राथमिकता दें — स्टैक की गति • पहचान या साझा अवस्था की आवश्यकता होने पर क्लास का उपयोग करें • सघन लूप में आवंटन करने से बचें — `reserveCapacity` से पहले से आवंटन करें • अनुकूलन से पहले प्रोफ़ाइल करें — समयपूर्व अनुकूलन समय नष्ट करता है

त्वरित जाँच

फ़ंक्शन का दायरा समाप्त होने पर किस प्रकार की मेमोरी अपने-आप मुक्त होती है?

पुनरावलोकन

मुख्य बातें: • स्टैक: कम लागत वाला, स्वचालित, थ्रेड-स्थानीय, मान प्रकारों के लिए • हीप: लचीला, ARC-प्रबंधित, संदर्भ प्रकारों के लिए • बड़े स्ट्रक्चर भीतर हीप बफ़र का उपयोग करते हैं (COW) • चर कैप्चर करने वाले क्लोज़र उन्हें हीप पर बॉक्स में रखते हैं • अनपेक्षित हीप दबाव का पता लगाने के लिए Instruments Allocations का उपयोग करें अगला विषय: परिवर्तन, साझाकरण और अनपेक्षित अलियासिंग।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “स्टैक बनाम हीप: मान कहाँ रहते हैं” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “स्टैक बनाम हीप: मान कहाँ रहते हैं” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“स्टैक बनाम हीप: मान कहाँ रहते हैं” में मैं क्या सीखूँगा?

जानें कि स्ट्रक्चर स्टैक पर और क्लास हीप पर कैसे रहती हैं तथा इसका प्रदर्शन पर क्या प्रभाव पड़ता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“स्टैक बनाम हीप: मान कहाँ रहते हैं” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. स्टैक बनाम हीप: मान कहाँ रहते हैं
  2. म्यूटेशन, साझाकरण और अप्रत्याशित उपनामन
  3. मिश्रित मान/संदर्भ ग्राफ
  4. मान अर्थविज्ञान के लिए API डिज़ाइन करना
← Swift Academy पर वापस जाएँ