मैं समझता हूं कि, जब हम संबंधित new []
द्वारा बनाए गए पॉइंटर पर delete []
लिखते हैं, तो प्रोग्राम सरणी पर लेखांकन जानकारी की तलाश करेगा और सरणी के तत्व आकार (काउंटर) का पता लगाएगा। फिर कार्यक्रम उनमें से प्रत्येक पर तत्व के विनाशक को आमंत्रित करता है। अंत में स्मृति (क्या स्मृति ??) operator delete
नामक फ़ंक्शन द्वारा हटा दी गई है।क्या विनाशकों को आह्वान करने के बाद एक शॉट में स्मृति को हटा दिया गया है?
क्या मैं पूछ रहा हूँ कि क्या delete[]
पूरे स्मृति, new[]
अभिव्यक्ति द्वारा आवंटित पुनःआवंटन जाएगा, एक शॉट में क्योंकि उस जानकारी (स्मृति की कुल राशि) उपलब्ध के बाद सभी तत्वों को नष्ट कर रहे हैं, या होगा यह है क्रमशः सरणी तत्वों द्वारा कब्जा कर लिया गया स्मृति को हटा देता है जिस पर उसने विनाशकों को बुलाया है?
इससे संबंधित एक अनुवर्ती quesion Does delete (non array form) know the total amount of memory allocated by either new or new[]
मैंने सोचा है अपने प्रश्न का उत्तर संकलक और ऑपरेटिंग सिस्टम –
करता है 'free' आवंटन' malloc' द्वारा लौटाए के आकार पता करने की जरूरत द्वारा कार्यान्वयन पर निर्भर करता है? –
क्या सी ++ मानक 'हटाएं' अभिव्यक्ति के अनुमानित व्यवहार के बारे में कुछ भी कहता है? – Rich