मेमोरी और रिसोर्स (Memory & Resources)
C++ के ओनरशिप मॉडल में महारत हासिल करें — रॉ पॉइंटर से लेकर स्मार्ट पॉइंटर और मूव सिमेंटिक्स तक — ताकि आप ऐसा कोड लिख सकें जिसमें कभी लीक न हो।
पॉइंटर और रेफ़रेंस
पॉइंटर: एड्रेस, डिरेफ़रेंस और अरिथमेटिक
पॉइंटर को मेमोरी एड्रेस के रूप में समझें; एड्रेस-ऑफ़ और डिरेफ़रेंस ऑपरेटर, ऐरे के भीतर पॉइंटर अरिथमेटिक, पॉइंटर के साथ const correctness, और आधुनिक C++ में रॉ पॉइंटर अब भी कब उचित हैं, यह सीखें।
रेफ़रेंस: Lvalue, Rvalue और गलतियाँ
lvalue और rvalue रेफ़रेंस को जानें, C++ की वैल्यू कैटेगरी (value category) समझें, रेफ़रेंस कोलैप्सिंग (reference collapsing) के नियम और फ़ॉरवर्डिंग रेफ़रेंस (forwarding reference) सीखें, और डैंगलिंग रेफ़रेंस वाले बग से बचें।
डायनैमिक मेमोरी: new, delete और उनके ख़तरे
जानें कि new और delete के साथ डायनैमिक एलोकेशन कैसे काम करता है, मेमोरी लीक, डबल-फ़्री और यूज़-आफ़्टर-फ़्री के ख़तरों को समझें, और देखें कि आधुनिक C++ में रॉ new/delete की संख्या शून्य क्यों होनी चाहिए।
स्मार्ट पॉइंटर
std::unique_ptr: विशिष्ट ओनरशिप
जानें कि std::unique_ptr कैसे बिना किसी ओवरहेड के विशिष्ट ओनरशिप देता है, make_unique का उपयोग कैसे करें, C रिसोर्स के लिए कस्टम डिलीटर, और फ़ैक्ट्री फ़ंक्शन पैटर्न।
shared_ptr, weak_ptr और ओनरशिप ग्राफ़
shared_ptr के साथ रेफ़रेंस-काउंटेड साझा ओनरशिप को समझें, weak_ptr से चक्र (cycle) तोड़ना सीखें, कंट्रोल ब्लॉक और एलियासिंग के बारे में जानें, और यह भी जानें कि shared_ptr कब गलत विकल्प होता है।
मूव सिमेंटिक्स और RAII
मूव सिमेंटिक्स और std::move
समझें कि मूव सिमेंटिक्स किस समस्या को हल करता है, std::move असल में एक कास्ट है, मूव नहीं, मूव कंस्ट्रक्टर और मूव असाइनमेंट कैसे लागू करें, और कंटेनर की परफ़ॉर्मेंस के लिए noexcept क्यों ज़रूरी है।
परफ़ेक्ट फ़ॉरवर्डिंग और std::forward
समझें कि नाम वाले rvalue रेफ़रेंस lvalue क्यों होते हैं, std::forward के साथ कैनोनिकल फ़ॉरवर्डिंग पैटर्न सीखें, और देखें कि emplace_back वेरिएडिक फ़ॉरवर्डिंग से ऑब्जेक्ट को इन-प्लेस कैसे बनाता है।
RAII: बुनियादी रिसोर्स पैटर्न
RAII (Resource Acquisition Is Initialization) सीखें — एक्सेप्शन-सेफ़ रिसोर्स मैनेजमेंट का मूल C++ पैटर्न। RAII रैपर लागू करें, lock_guard और scoped_lock को समझें, और जानें कि RAII टाइप मूव-ओनली या रेफ़रेंस-काउंटेड क्यों होने चाहिए।