Avatar ·

स्मार्ट पॉइंटर्स क्या हैं और उनका उपयोग कब करना चाहिए?

नमस्ते साथियों! मैं C++ में बहुत समय से नहीं लिख रहा हूँ, लेकिन मुझे पहले से ही मेमोरी लीक की समस्या का सामना करना पड़ा है। मैं अभी भी `new` और `delete` के साथ सामान्य "रॉ" पॉइंटर्स (raw pointers) का उपयोग कर रहा हूँ, लेकिन मैं लगातार `delete` को कॉल करना भूल जाता हूँ, खासकर जब कोड अपवादों और जल्दी रिटर्न से भर जाता है। उदाहरण के लिए: ```cpp void process() { Resource* res = new Resource(); // ... कुछ कोड जो अपवाद फेंक सकता है ... delete res; // अगर अपवाद था, तो हम यहाँ तक नहीं पहुँचेंगे — लीक! } ``` मैंने C++11 में "स्मार्ट पॉइंटर्स" (smart pointers) के बारे में सुना है, लेकिन मैं पूरी तरह से नहीं समझता कि यह क्या है। इंटरनेट पर बहुत सारी जानकारी है, लेकिन मैं एक स्पष्ट स्पष्टीकरण चाहता हूँ: ये क्या हैं, ये सामान्य पॉइंटर्स से कैसे भिन्न हैं, और वास्तव में इन्हें किन स्थितियों में उपयोग करना चाहिए? विशेष रूप से `std::unique_ptr`, `std::shared_ptr` और `std::weak_ptr` में रुचि है। कब कौन सा चुनना चाहिए? क्या कोई नुकसान हैं? मैं कोड उदाहरणों और शुरुआती लोगों के लिए स्पष्टीकरण के लिए आभारी रहूँगा। <<>>

स्मार्ट पॉइंटर क्या है?

स्मार्ट पॉइंटर एक...