मेरा कुछ कोड अभी भी new
के बजाय malloc
का उपयोग करता है। इसका कारण यह है कि मुझे new
का उपयोग करने से डर है क्योंकि यह NULL
लौटने के बजाय अपवाद फेंकता है, जिसे मैं आसानी से देख सकता हूं। try{}catch(){}
में प्रत्येक कॉल को new
पर लपेटना भी अच्छा नहीं दिखता है। जबकि malloc
का उपयोग करते समय मैं केवल if (!new_mem) { /* handle error */ }
कर सकता हूं।क्या सी ++ स्मार्ट पॉइंटर्स का उपयोग सी के मॉलोक के साथ करना संभव है?
इसलिए मेरे पास एक प्रश्न है। क्या मैं malloc
के साथ स्मार्ट पॉइंटर्स का उपयोग कर सकता हूं?
कुछ की तरह:
SmartPointer<Type> smarty = malloc(sizeof(Type));
कुछ इस तरह।
क्या यह संभव है?
धन्यवाद, बोडा साइडो।
यदि आप अब अपवाद फेंकना चाहते हैं और केवल वापस लौटाना चाहते हैं तो आप इसका उपयोग कर सकते हैं: टाइप * bla = new (std :: nothrow) टाइप() ;. मुझे लगता है कि बाद में malloc की तुलना में std :: nothrow का उपयोग करना बेहतर है क्योंकि बाद में निर्माता को कॉल नहीं किया जाता है। –
स्मृति प्राप्त करने के लिए क्षतिपूर्ति करने के लिए त्रुटि प्रबंधन कोड में आप क्या करने जा रहे हैं? आम तौर पर परीक्षण तब होता है जब आवंटन काम करता है तो काम करता है। यदि यह एक त्रुटि कोड से बाहर निकलने में विफल रहा है (जो स्टैक बैक अप बैक अप कंट्रोल है)। –