delete[]ऑपरेटर हटाने सरणियों किया जाता है। deleteऑपरेटर गैर सरणी वस्तुओं को हटाने के लिए प्रयोग किया जाता है। यह मेमोरी को हटाने के लिए क्रमशः कॉल करता है operator delete[]और operator deleteकार्य करता है कि सरणी के तत्वों या गैर-सरणी ऑब्जेक्ट के लिए विध्वंसक को कॉल करने के बाद (अंततः) कब्जे वाली सरणी या गैर-सरणी ऑब्जेक्ट।
निम्नलिखित संबंधों को दर्शाता है:
typedef int array_type[1];
// create and destroy a int[1]
array_type *a = new array_type;
delete [] a;
// create and destroy an int
int *b = new int;
delete b;
// create and destroy an int[1]
int *c = new int[1];
delete[] c;
// create and destroy an int[1][2]
int (*d)[2] = new int[1][2];
delete [] d;
के लिए new है कि एक सरणी बनाता है (हां, तो या तो new type[]या newएक सरणी प्रकार निर्माण करने के लिए लागू), एक के लिए मानक दिखता operator new[]सरणी के तत्व प्रकार कक्षा में या वैश्विक क्षेत्र में, और अनुरोध किया स्मृति की मात्रा से गुजरता है। N * sizeof(ElementType)यदि यह चाहता है कि यह अधिक से अधिक अनुरोध कर सकता है (उदाहरण के लिए तत्वों की संख्या को संग्रहीत करने के लिए, इसलिए बाद में जब हटाने से पता चलता है कि कितने विध्वंसक कॉल किए जाते हैं)। यदि कक्षा घोषित करती है operator new[]कि स्मृति की मात्रा को अतिरिक्त कोई और स्वीकार करता हैsize_t , तो दूसरा पैरामीटर आवंटित तत्वों की संख्या प्राप्त करेगा - यह किसी भी उद्देश्य के लिए इसका उपयोग कर सकता है (डिबगिंग, आदि ...)।
इसके लिए newएक गैर-सरणी ऑब्जेक्ट बनाता है, यह operator newतत्व के वर्ग में या वैश्विक दायरे में दिखेगा । यह अनुरोधित मेमोरी की मात्रा ( sizeof(T)हमेशा हमेशा) पास करता है।
इसके लिए delete[], यह सरणियों के तत्व वर्ग प्रकार में दिखता है और उनके विनाशकों को बुलाता है। operator delete[]उपयोग किया जाने वाला फ़ंक्शन तत्व प्रकार की कक्षा में एक है, या यदि वैश्विक दायरे में कोई नहीं है।
इसके लिए delete, यदि पॉइंटर पास किया गया वास्तविक वस्तु के प्रकार का एक आधार वर्ग है, तो आधार वर्ग में एक आभासी विध्वंसक होना चाहिए (अन्यथा, व्यवहार अपरिभाषित है)। यदि यह एक आधार वर्ग नहीं है, तो उस वर्ग के विध्वंसक को कहा जाता है, और operator deleteउस कक्षा में या वैश्विक operator deleteउपयोग किया जाता है। यदि एक आधार वर्ग पारित किया गया था, तो वास्तविक वस्तु प्रकार के विध्वंसक को कहा जाता है, और operator deleteउस वर्ग में पाया जाता है, या यदि कोई नहीं है, तो एक वैश्विक operator deleteकहा जाता है। यदि operator deleteकक्षा में दूसरे प्रकार का पैरामीटर है size_t, तो उसे डीललोकेट करने के लिए तत्वों की संख्या प्राप्त होगी।