सामग्री पर जाएं
मॉड्यूल 3

मेमोरी और रिसोर्स (Memory & Resources)

C++ के ओनरशिप मॉडल में महारत हासिल करें — रॉ पॉइंटर से लेकर स्मार्ट पॉइंटर और मूव सिमेंटिक्स तक — ताकि आप ऐसा कोड लिख सकें जिसमें कभी लीक न हो।

पॉइंटर और रेफ़रेंस

  1. पॉइंटर: एड्रेस, डिरेफ़रेंस और अरिथमेटिक

    पॉइंटर को मेमोरी एड्रेस के रूप में समझें; एड्रेस-ऑफ़ और डिरेफ़रेंस ऑपरेटर, ऐरे के भीतर पॉइंटर अरिथमेटिक, पॉइंटर के साथ const correctness, और आधुनिक C++ में रॉ पॉइंटर अब भी कब उचित हैं, यह सीखें।

  2. रेफ़रेंस: Lvalue, Rvalue और गलतियाँ

    lvalue और rvalue रेफ़रेंस को जानें, C++ की वैल्यू कैटेगरी (value category) समझें, रेफ़रेंस कोलैप्सिंग (reference collapsing) के नियम और फ़ॉरवर्डिंग रेफ़रेंस (forwarding reference) सीखें, और डैंगलिंग रेफ़रेंस वाले बग से बचें।

  3. डायनैमिक मेमोरी: new, delete और उनके ख़तरे

    जानें कि new और delete के साथ डायनैमिक एलोकेशन कैसे काम करता है, मेमोरी लीक, डबल-फ़्री और यूज़-आफ़्टर-फ़्री के ख़तरों को समझें, और देखें कि आधुनिक C++ में रॉ new/delete की संख्या शून्य क्यों होनी चाहिए।

स्मार्ट पॉइंटर

  1. std::unique_ptr: विशिष्ट ओनरशिप

    जानें कि std::unique_ptr कैसे बिना किसी ओवरहेड के विशिष्ट ओनरशिप देता है, make_unique का उपयोग कैसे करें, C रिसोर्स के लिए कस्टम डिलीटर, और फ़ैक्ट्री फ़ंक्शन पैटर्न।

  2. shared_ptr, weak_ptr और ओनरशिप ग्राफ़

    shared_ptr के साथ रेफ़रेंस-काउंटेड साझा ओनरशिप को समझें, weak_ptr से चक्र (cycle) तोड़ना सीखें, कंट्रोल ब्लॉक और एलियासिंग के बारे में जानें, और यह भी जानें कि shared_ptr कब गलत विकल्प होता है।

मूव सिमेंटिक्स और RAII

  1. मूव सिमेंटिक्स और std::move

    समझें कि मूव सिमेंटिक्स किस समस्या को हल करता है, std::move असल में एक कास्ट है, मूव नहीं, मूव कंस्ट्रक्टर और मूव असाइनमेंट कैसे लागू करें, और कंटेनर की परफ़ॉर्मेंस के लिए noexcept क्यों ज़रूरी है।

  2. परफ़ेक्ट फ़ॉरवर्डिंग और std::forward

    समझें कि नाम वाले rvalue रेफ़रेंस lvalue क्यों होते हैं, std::forward के साथ कैनोनिकल फ़ॉरवर्डिंग पैटर्न सीखें, और देखें कि emplace_back वेरिएडिक फ़ॉरवर्डिंग से ऑब्जेक्ट को इन-प्लेस कैसे बनाता है।

  3. RAII: बुनियादी रिसोर्स पैटर्न

    RAII (Resource Acquisition Is Initialization) सीखें — एक्सेप्शन-सेफ़ रिसोर्स मैनेजमेंट का मूल C++ पैटर्न। RAII रैपर लागू करें, lock_guard और scoped_lock को समझें, और जानें कि RAII टाइप मूव-ओनली या रेफ़रेंस-काउंटेड क्यों होने चाहिए।

एडवांस्ड मेमोरी

  1. मेमोरी लेआउट, अलाइनमेंट और ऑब्जेक्ट रिप्रेज़ेंटेशन

    struct पैडिंग और अलाइनमेंट की आवश्यकताओं को समझें, साइज़ घटाने के लिए मेंबर का क्रम ऑप्टिमाइज़ करें, कैश लाइन और फ़ॉल्स शेयरिंग के बारे में जानें, और कॉम्पैक्ट लेआउट के लिए [[no_unique_address]] जैसे C++20 फ़ीचर इस्तेमाल करें।