बनाने के लिए make_shared का उपयोग करने के साथ कोई डाउनसाइड्स हैं shared_ptr<T>(new T)
का उपयोग करने के बजाय make_shared<T>()
का उपयोग करने के साथ कोई डाउनसाइड्स हैं।क्या साझा_ptr
Boost documentation राज्यों
वहाँ एक कारखाने समारोह है कि एक दिया प्रकार और रिटर्न इसे करने के लिए एक shared_ptr की एक वस्तु बनाता है के लिए उपयोगकर्ताओं से अनुरोध दोहराया गया है। सुविधा और शैली इसके अलावा, इस तरह के एक समारोह भी अपवाद सुरक्षित और काफी तेज है, क्योंकि यह दोनों वस्तु और उसके संगत नियंत्रण ब्लॉक के लिए एक भी आवंटन, shared_ptr के निर्माण भूमि के ऊपर का एक महत्वपूर्ण भाग को नष्ट करने का उपयोग कर सकते हैं। यह shared_ptr के बारे में प्रमुख दक्षता शिकायतों में से एक को समाप्त करता है।
एक आश्चर्य हो सकता है, shared_ptr के बारे में अन्य प्रमुख दक्षता शिकायतें क्या हैं? –
अपवाद सुरक्षा 'std :: make_shared' की एक सुंदर मजबूत * संपत्ति * है। जब भी संभव हो इसका उपयोग करने का प्रयास करें। –
संदर्भ काउंटर पर @ViktorSehr Mutex ताले जब एक 'shared_ptr' कॉपी किया जाता है मुख्य रूप से :) – Drax