यदि आप जो मेमोरी आवंटित कर रहे हैं, वह एक निर्माणकर्ता के साथ एक वर्ग है जो कुछ उपयोगी करता है, तो ऑपरेटर नया उस कंस्ट्रक्टर को कॉल करेगा और आपके कंप्यूटर को प्रारंभिक रूप से छोड़ देगा।
लेकिन अगर आप POD आवंटित कर रहे हैं या ऐसी कोई चीज़ जिसमें एक कंस्ट्रक्टर नहीं है जो ऑब्जेक्ट की स्थिति को इनिशियलाइज़ करता है, तो आप मेमोरी को आवंटित नहीं कर सकते हैं और एक ऑपरेशन में ऑपरेटर नई के साथ उस मेमोरी को इनिशियलाइज़ कर सकते हैं। हालाँकि, आपके पास कई विकल्प हैं:
1) इसके बजाय एक स्टैक चर का उपयोग करें। आप इस तरह एक कदम में आवंटित और डिफ़ॉल्ट शुरू कर सकते हैं :
int vals[100] = {0}; // first element is a matter of style
2) का उपयोग करें memset()
। ध्यान दें कि यदि आप जिस वस्तु को आवंटित कर रहे हैं वह POD नहीं है , तो उसे रद्द करना एक बुरा विचार है। एक विशिष्ट उदाहरण यह है कि यदि आप एक ऐसे वर्ग को याद करते हैं जिसमें आभासी कार्य हैं, तो आप व्यवहार्य को उड़ा देंगे और अपनी वस्तु को अनुपयोगी अवस्था में छोड़ देंगे।
3) कई ऑपरेटिंग सिस्टम में कॉल होते हैं जो आप चाहते हैं - एक ढेर पर आवंटित करें और डेटा को किसी चीज़ से आरंभ करें। एक विंडोज उदाहरण होगाVirtualAlloc()
4) यह आमतौर पर सबसे अच्छा विकल्प है। स्मृति को स्वयं प्रबंधित करने से बचें। आप कच्चे मेमोरी के साथ कुछ भी करने के लिए एसटीएल कंटेनरों का उपयोग कर सकते हैं, जिसमें सभी को गिराने और एक ही झटके में आवंटन करने सहित शामिल हैं:
std::vector<int> myInts(100, 0); // creates a vector of 100 ints, all set to zero