new and delete operators c++ Hindi
सी++ प्रोग्रामिंग में new और delete ऑपरेटर को प्रोग्राम मेमोरी मैनेजमेंट के रूप में डायनेमिक मेमोरी एलोकेशन और मेमोरी डीलोकेशन के रूप में उपयोग किया जाता है। जहा new और delete ऑपरेटर प्रोग्राम डाटा स्टोरेज स्टैक के अपोसिट हीप में मेमोरी मैनेजमेंट प्रोसेस करते हैं, और किसी भी सी++ प्रोग्राम के एक्सेक्युशन के दौरान ऑब्जेक्ट और एरे क्रिएट करने और पुराने ऐरे एलिमेंट को डिलीट करने में इम्पोर्टेन्ट रोल प्ले करते हैं।

new operator in C++ programming.
किसी भी सी++ प्रोग्राम में new ऑपरेटर मौजूदा प्रोग्राम के लिए हीप से मेमोरी अलॉट या क्रिएट करता है, और उसे यूजर जनरेटेड पॉइंटर पोजीशन पर मूव करता है। सी++ प्रोग्राम में new ऑपरेटर का उपयोग किसी सिंगल ऑब्जेक्ट या ऑब्जेक्ट के ऐरे के लिए जरूरी मेमोरी बाइट लोकेशन अलॉट करने में किया जा सकता है।
new operator syntax in C++ programming.
Single Object:
P* ptr = new P; // it Allocates memory with new operator for object of type P
Array of Objects.
P* ptr = new P[n]; // It Allocates memory with new for an array of n objects of type P
Example of new operator in C++ programming.
#include <iostream>
class TestClass {
public:
TestClass() { std::cout << “\n Constructor operation perform”; }
~TestClass() { std::cout << “\n Destructor operation perform”; }
};
int main() {
// it allot memory for single object
TestClass* delobj = new TestClass(); // Constructor operation perform
// it allot memory for array of objects
TestClass* array = new TestClass[4]; // here Constructor call each element
// it deallocate memory using ‘delete’ operator
delete delobj; // here Destructor is call single obj
delete[] array; // here Destructor is call all object in the array loation
return 0;
}
delete operator in C++ programming.
किसी भी सी++ प्रोग्राम में delete ऑपरेटर का उपयोग new ऑपरेटर द्वारा अलॉट हीप मेमोरी स्पेस लोकशन को फ्री करने में किया जाता है। यहाँ आपको सी++ प्रोग्राम में डिलीट ऑपरेटर का उपयोग करते समय ऑब्जेक्ट का डिस्ट्रक्टर ऑटोमेटिकली इसे कॉल करता है।
Delete operator syntax in C++ programming.
Single Object:
delete ptr; // it Deallocates memory with delete operator for the single object
Array of Objects.
delete[] ptr; // it Deallocates or delete memory with delete for the array of ob jects
Example of delete operator in C++ programming.
#include <iostream>
class TestClass {
public:
TestClass() { std::cout << “\n Constructor process done”; }
~TestClass() { std::cout << “\n Destructor process done”; }
};
int main() {
TestClass* delobj = new TestClass(); //here the new operator allot Memory dynamically
delete delobj; // here use delete operator as Destructor to called and memory and free them
TestClass* array = new TestClass[3]; // create new operator Memory with 3 array objects element
delete[] array; // here delete operator Destructor call with each object array and memory will be free
return 0;
}
Main points of delete operator.
Facts about memory allocation and deallocation in C++ program.
- सी++ प्रोग्राम में new ऑपरेटर हीप से किसी भी प्रोग्राम के लिए मेमोरी अलॉट करता है, और उसे पॉइंटर लोकशन पर रिटर्न करता है।
- सी++ प्रोग्राम में delete ऑपरेटर सिंगल प्रोग्राम ऑब्जेक्ट के लिए मेमोरी डीलोकेशन फीचर्स प्रदान करता है, यह पूर्व में अलॉट मेमोरी लोकशन स्पेस को फ्री करता है।
- यह मौजूदा सी++ प्रोग्राम में new[] ऑपरेटर ऑब्जेक्ट ऐरे के लिए मेमोरी अलॉट करता है।
- यह मौजूदा सी++ प्रोग्राम में delete[] ऑब्जेक्ट ऐरे के लिए मेमोरी डीलोकेशन या पूर्व में अलॉट ऐरे ब्लॉक मेमोरी एलिमेंट लोकेशन स्पेस को फ्री करता है।
Memory error management in C++ programs.
यदि आपके मौजूदा प्रोग्राम में new ऑपरेटर मेमोरी अलॉट नहीं कर पाता है, तो यह उस प्रोग्राम में std::bad_alloc एक्सेप्शन को थ्रो करता है. जब तक आप इसे new ऑपरेटर के nothrow वर्जन जैसे, new(std::nothrow के साथ उपयोग नहीं करते है।
यदि मौजूदा सी++ प्रोग्राम में पॉइंटर nullptr है, तो यहाँ delete मेमोरी ऑपरेटर परफॉर्म नहीं करता है. इस वजह से पहले आपको उस प्रोग्राम में delete ऑपरेटर को कॉल करने से पहले टेस्ट करने की कोई जरूरत नहीं है।
Double free error in C++ program.
किसी सी++ प्रोग्राम में पॉइंटर पर एक से अधिक बार delete ऑपरेटर को कॉल करना या किसी non-ऐरे पॉइंटर पर delete[] ऑपरेटर को कॉल करना ऐबनार्मल ऐरे प्रोग्राम बिहैवियर हो सकता है। सबसे पहले, आप यह सुनिश्चित करें कि आप मौजूदा ऐरे प्रोग्राम में प्रत्येक ऑब्जेक्ट या ऐरे एलिमेंट को ठीक एक बार डिलीट करे।
Memory leak in C++ program.
जब आप मौजूदा सी++ प्रोग्राम में new ऑपरेटर के साथ न्यू मेमोरी लोकेशन स्पेस को अलॉट करते हैं, जबकि आप delete ऑपरेटर के साथ उस अलॉट मेमोरी लोकेशन को डी-एलोकेट नहीं करते हैं. तो आप उस प्रोग्राम में अलॉटेड मेमोरी लीक होने का कारण कर सकते है। तो आपको अपने मौजूदा प्रोग्राम में इस तरह के मेमोरी लीक कारण से बचने के लिए आप उस प्रोग्राम में डायनामिक रूप से आपको अलॉट मेमोरी को डी-एलोकेट करना जरूरी होगा।
Example of memory leak in C++ program.
#include <iostream>
class TestClass {
public:
TestClass() { std::cout << “\n Constructor process done”; }
~TestClass() { std::cout << “\n Destructor process done”; }
};
int main() {
TestClass* delobj = new TestClass(); //here the new operator allot Memory dynamically
delete delobj; // here use delete operator as Destructor to called and memory and free them
TestClass* array = new TestClass[3]; // create new operator Memory with 3 array objects element
delete[] array; // here delete operator Destructor call with each object array and memory will be free
return 0;
}
यहाँ ऊपर दिए गए इस प्रोग्राम उदाहरण में, new ऑपरेटर के साथ अलॉट मेमोरी कभी भी फ्री नहीं होती है. इस कारण मौजूदा प्रोग्राम में परिणामस्वरूप मेमोरी लीक हो जाएगी।
Using new and delete Safely in C++ program.
किसी भी सी++ प्रोग्राम में मेमोरी लीक कारण से बचने के लिए, आपको यह सुनिश्चित करना होगा कि प्रत्येक new ऑपरेटर के साथ अलॉट मेमोरी ऑपरेशन में एक कम्पेटिबल या डिलीट ऑपरेशन अप्लाई हो सके। आप अपने प्रोग्राम में डायनामिक मेमोरी को ऑटोमेटिकली मैनेज करने और मैन्युअल मेमोरी मैनेजमेंट की प्रोब्लेम्स को अवॉयड करने के लिए बिल्ट-इन C++ स्टैंडर्ड लाइब्रेरी से स्मार्ट पॉइंटर्स जैसे, std::unique_ptr और std::shared_ptr, फीचर्स को अप्लाई कर सकते हैं।