This MSDN page उल्लेख करता है कि new
और delete
के संस्करण नहीं हैं। nothrow new
काफी ज्ञात चीज है - स्मृति आवंटन विफल होने पर अपवाद फेंकने के बजाय शून्य वापस आती है। लेकिन nothrow delete
क्या है?सी ++ में नोट्रो हटाएं क्या है?
उत्तर
वे शायद कच्चे मेमोरी आवंटन कार्यों operator new
और operator delete
का जिक्र कर रहे हैं।
जब आप किसी विशेष स्थान नई अभिव्यक्ति के संस्करण आह्वान, और स्मृति आवंटन समारोह operator new
सफल होता है, लेकिन इस प्रक्रिया में विफल रहता है (अतिरिक्त पैरामीटर के साथ यानी नई अभिव्यक्ति वे सभी सरकारी तौर पर नियुक्ति new
की रूपों के रूप में भेजा जाता है) बाद में किसी अन्य कारण (कन्स्ट्रक्टर फेंकता है) के लिए, कार्यान्वयन को प्रक्रिया को निरस्त करना होगा और operator delete
के उपयुक्त संस्करण को कॉल करके आवंटित स्मृति को स्वचालित रूप से रिलीज़ करना होगा। इस मामले में operator delete
का "उपयुक्त संस्करण" संस्करण है जिसमें पैरामीटर का एक ही सेट है operator new
फ़ंक्शन पहले स्मृति आवंटन के लिए उपयोग किया गया था (बिल्कुल पहले पैरामीटर को छोड़कर)।
यह nothrow
operator new
के संस्करण पर भी लागू होता है। जब आप nothrow
नई अभिव्यक्ति के रूप का उपयोग करते हैं, तो यह nothrow
operator new
का संस्करण कॉल करता है और फिर ऑब्जेक्ट आवंटित स्मृति में बनाता है। यदि कन्स्ट्रक्टर विफल रहता है (फेंकता है), नई अभिव्यक्ति के कार्यान्वयन operator delete
के संस्करण की सहायता से आवंटित स्मृति को रिलीज़ करता है। operator delete
के इस संस्करण के लिए यह मूल रूप से एकमात्र कारण है।
दूसरे शब्दों में, nothrow
operator delete
का संस्करण बहुत विशिष्ट आंतरिक उद्देश्यों के लिए मौजूद है। आपको सामान्य रूप से इसे स्वयं नहीं कहना चाहिए और शायद, आपको वास्तव में इसके अस्तित्व के बारे में जानने की आवश्यकता नहीं है। हालांकि, यह जानने योग्य है कि ऊपर वर्णित कारणों के लिए, जब भी आप अतिरिक्त पैरामीटर के साथ operator new
का अपना संस्करण बनाते हैं, तो अतिरिक्त पैरामीटर के उसी सेट के साथ operator delete
का मिलान संस्करण प्रदान करना हमेशा अच्छा विचार है।
- 1. नोट्रो या अपवाद?
- 2. विज़ुअल सी ++ में इसे हटाएं और हटाएं?
- 3. हटाएं बनाम हटाएं [] ऑपरेटर सी ++
- 4. "= हटाएं" क्या है?
- 5. सी ++ पॉइंटर्स का ऐरे: हटाएं या हटाएं []?
- 6. सी ++: एक संरचना हटाएं?
- 7. सी # में एक सरणी को कैसे हटाएं?
- 8. सी ++ में फ़ोल्डर को कैसे हटाएं?
- 9. क्यों "हटाएं [] [] ... multDimensionalArray;" सी ++ में ऑपरेटर मौजूद नहीं है
- 10. आईओएस हटाएं बटन - उद्देश्य सी
- 11. सी ++ नया/हटाएं और चार *
- 12. सी ++ में ** क्या है?
- 13. क्या यह 'इसे हटाएं' सुरक्षित है?
- 14. 'हटाएं' का सरणी रूप क्या है?
- 15. "इसे हटाएं" का उपयोग क्या है?
- 16. क्या हटाएं बच्चे वास्तव में तत्व को हटा देता है?
- 17. क्या मानक लाइब्रेरी (एसटीएल) कंटेनर नोट्रो आवंटन के एक रूप का समर्थन करते हैं?
- 18. सी = सी ++ में^= मतलब क्या है?
- 19. सी # में एक स्ट्रिंग में अंतिम चरित्र को कैसे हटाएं?
- 20. सी = # में क्या मतलब है?
- 21. सी ++ में "शाब्दिक" क्या है?
- 22. सी ++ में ~ मतलब क्या है?
- 23. सी में बिटमैप क्या है?
- 24. सी ++ में "^" प्रतीक क्या है?
- 25. [#] सी # में क्या मतलब है?
- 26. सी # में ऑपरेटर "??" क्या है?
- 27. सी # में [और] क्या है?
- 28. सी ++ में '\ 0' क्या है?
- 29. :: सी ++ में :: मतलब क्या है?
- 30. सी # में/*! */मतलब क्या है?