मॉलोक और न्यू के बीच का अंतर

Anonim

मॉलोक बनाम नया

एक एक कंप्यूटर प्रोग्रामर की भर्ती में सबसे सामान्य साक्षात्कार के प्रश्न आवेदक / कंप्यूटर प्रोग्रामर के लिए है जो कि मॉलोक और नए के बीच के अंतर को समझाने के लिए। दोनों malloc और नए कंप्यूटर भाषा के क्षेत्र में मौजूद हैं और अक्सर गतिशील स्मृति आवंटन के लिए कंप्यूटर प्रोग्रामर द्वारा उपयोग किया जाता है।

दोनों के बीच मूल मतभेद यह है कि malloc सी-भाषा में मौजूद है जबकि नया सी ++ भाषा की एक विशिष्ट विशेषता है। मॉलोक भी एक समारोह है (प्रोग्रामर के लिए, कुछ समय के लिए निष्पादित होता है), जबकि नया ऑपरेटर प्रोग्राम है (जो निष्पादन समय में कटौती करता है)। यह ऑपरेटर से एक फायदा है क्योंकि वास्तविक प्रोग्रामिंग करने वाले प्रोग्रामर को उपयोग करने के लिए सबसे तेज़ तरीका चुनने की आवश्यकता होती है।

-2 ->

ऑपरेटर नया फ़ंक्शन malloc के विपरीत प्रकार सुरक्षित है

फ़ंक्शन मॉलोक सी-भाषा के लिए लाइब्रेरी फ़ंक्शन है यह सब मेमोरी आवंटित करता है और इसके लिए एक सूचक वापस करता है। दूसरी ओर, ऑपरेटर नया एक भाषा-स्तर का निर्माण होता है, और इसका काम स्मृति को आवंटित करके एक उपयुक्त वस्तु को इन्स्तांत करना और उपयुक्त कंट्रोलर्स को कॉल करना है। ऑपरेटर नई से फलन मॉलोक का दूसरा अंतर यह है कि मॉलोक को घोषणा के दौरान टाइपकास्टिंग की आवश्यकता है, जबकि पूर्व में यह नहीं है। इसके अलावा, समारोह malloc शब्द को खाली करने के लिए "मुफ़्त" शब्द का उपयोग करता है, जबकि इसी तरह के उद्देश्य के लिए ऑपरेटर में "हटाए" का उपयोग किया जाता है।

दोनों में विफलता और स्मृति थकावट से निपटने में भी अलग-अलग तरीके हैं। अगर समारोह malloc विफल रहता है, यह एक नल सूचक के साथ देता है ऑपरेटर नया कभी नल सूचक नहीं देता है लेकिन इसके बजाय एक अपवाद फेंकने से विफलता को इंगित करता है। यह ऑपरेटर के लिए एक फायदा है क्योंकि कंप्यूटर प्रोग्रामर को जब भी वह नया कॉल करता है तो लौटा संकेतक की जांच नहीं करनी पड़ती है और न ही कंप्यूटर प्रोग्रामर इस तरह के एक अपवाद को याद करेगा।

फ़ंक्शन मॉलोक ऑब्जेक्ट का निर्माण नहीं करता (ऑब्जेक्ट के कन्स्ट्रक्टर नामक) लेकिन ऑपरेटर नया करता है। नए का एक अन्य फायदा यह है कि ऑपरेटर को ओवरलोड किया जा सकता है, जबकि फ़ंक्शन malloc नहीं कर सकता। ऑपरेटर नई को आवंटित करने के लिए वस्तुओं की विशिष्ट संख्या की आवश्यकता होती है, जबकि फ़ंक्शन malloc को आवंटित करने के लिए बाइट्स की कुल संख्या निर्दिष्ट करने की आवश्यकता होती है।

रीहोलक का उपयोग करके फ़ंक्शन malloc का उपयोग करके मेमोरी को फिर से आकार या पुन: निर्दिष्ट किया जा सकता है हालांकि, ऑपरेटर नया इस फ़ंक्शन को नहीं कर सकता और उसे ऑपरेटर के मुख्य नुकसानों में से एक के रूप में गिना जाता है। ऑपरेटर पर फ़ंक्शन मॉलोक का दूसरा लाभ यह है कि malloc स्मृति की मात्रा को जल्दी से बढ़ा सकता है यह अभी भी malloc और realloc का उपयोग कर रहा है सी ++ भाषा में एक ही स्थिति करते समय, प्रोग्रामर को ऑपरेटर के साथ मेमोरी का एक नया हिस्सा बनाना पड़ता है। नई मेमोरी में एक संशोधित आकार होना चाहिए और मूल बफर से डेटा पर प्रतिलिपि किया जाएगा।नकल के बाद मूल बफर को हटा दिया जाना चाहिए। यह एक प्रोग्रामर के लिए धीमी प्रक्रिया हो सकती है

फ़ंक्शन मॉलोक पर ऑपरेटर नए का लाभ उठाने के लिए सटीक डाटा प्रकार लौटाएगा जबकि फ़ंक्शन शून्य रहित होगा। फ़ंक्शन मॉलोक भी ऑपरेटर के मुकाबले अतिभारित नहीं हो सकता है जिसमें ओवरलोडिंग संभव है। ऑपरेटर नई की एक और विशेषता यह है कि फ़ंक्शन मॉलोक की तुलना में ऑपरेटर के साथ गलती करने की कम संभावनाएं हैं। इसे प्रोग्रामर्स के लिए एक प्लस माना जाता है, खासकर यदि वे कई कोड लिख रहे हों या एक तंग कार्यक्रम पर कोड पर काम कर रहे हों। फ़ंक्शन malloc और फ्री C ++ में उपयोग किया जा सकता है, लेकिन इसे सीधे उपयोग नहीं किया जा सकता है। इसके बजाय नए और हटाने की सलाह दी जाती है

सारांश:

1 Malloc एक समारोह है, जबकि नया एक ऑपरेटर है।

2। नई सी ++ भाषा की एक विशिष्ट विशेषता है जबकि सी-भाषा में मॉलोक का उपयोग किया जाता है

3। ऑपरेटर नया "हटाएं" के साथ होता है, जबकि फ़ंक्शन malloc "मुक्त" के साथ जाता है "

4। फ़ंक्शन मॉलोक सी-भाषा के लिए लाइब्रेरी फ़ंक्शन है, जबकि ऑपरेटर नया एक भाषा-स्तर सी ++ भाषा से बना है।