C++ new Operator: “C++” में ये Operator Dynamically Memory Allocate करने का काम करता है। ये Operator हमारी जरूरत के अनुसार Memory Block को या Memory Locations को Reserve करता है और उन Memory Locations का Address एक Pointer के रूप में Return करता है। इसके काम करने के तरीके को हम निम्न Code Segment से समझ सकते हैं:
char* str = “Idle hands are the devil's workshop."; int len = strlen(str); // get length of str char* ptr; // make a pointer to char ptr = new char[len+1]; // allocate memory: size = str + '\0' strcpy(ptr, str); // copy str to new memory area cout << “ptr=” << ptr; // show that str is now in ptr delete[] ptr; // release ptr's memory
new Keyword का प्रयोग एक Data Type char के पहले किया गया है। इस char Data Type का मतलब है कि हम char प्रकार का Memory Block Create करना चाहते हैं। इसके बाद एक Bracket में char प्रकार के कुल characters की संख्या को Specify किया गया है। यानी ये Statement char प्रकार के उतने Variables Create करता है जितनी Size Bracket में दी जाती है और उन Created या Reserved Memory Locations का Address एक Pointer के रूप में ptr को Assign करता है।
हम इस Code Segment में देख सकते हैं कि हमने एक String के लिए Memory Block Create करने के लिए ये Statement लिखा है और इस Statement में String की Length को strlen() Library Function द्वारा प्राप्त किया है और इस Length में एक जोड कर जितनी Bytes की संख्या बनती है, उतनी Bytes को Memory में Reserve किया गया है। एक Byte Extra लेने का कारण ये है कि हर String का अन्त हमेंशा एक Null Terminator Character से होता है और उस Character को Store करने के लिए एक Extra Byte की जरूरत होती है।
हम जब भी new Operator का प्रयोग करते हैं हमें हमेंशा Data Type के बाद एक Bracket में उस Data Type के Variable की कुल Numerical Size Define करनी होती है।
यदि हम यहां पर Bracket के स्थान पर Parenthesis का प्रयोग करें तो भी Compiler कोई Error नहीं देता है, लेकिन हमें प्राप्त होने वाला परिणाम गलत होता है।
new Operator Dynamically यानी Program के Run होते समय Memory Block को Reserve करता है। ये Memory जिस Area में Reserve होती है उसे Heap या free Store कहा जाता है। Heap Area “C++” की Memory का तीसरा Area होता है। पहला Area Stack होता है जहां Automatic Variables Create होते हैं और दूसरा Area Static Storage Area होता है। यहां पर Program के External Variables Create होते हैं।
“C++” में new Operator वही काम करता है, जो काम “C” में malloc() function करता है। लेकिन new Operator से Memory Allocation का काम थोडा सरल हो जाता है।
जब हम new Operator से Memory Allocate करते हैं तब new Operator ना केवल Memory Allocate करता है, बल्कि यह Object को Create करके उसके Constructors को भी Invoke करता है। ये हमें इस बात की Guarantee देता है कि Object पूरी तरह से Initialized हो गया है, जिससे कई प्रकार की Programming Errors से Programmer बच जाता है।
new Operator Appropriate या Required Data Type का एक Pointer Return करता है जबकि malloc() Function से Return होने वाले Pointer की Casting करनी पडती है। इसलिए malloc() के स्थान पर हमेंशा new Operator का प्रयोग करना चाहिए। (C++ new Operator – TutorialsPoint)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF