मॉलोक बनाम न्यू: अंतर और तुलना

Malloc C भाषा में एक विशेषता है, जबकि new C++ में एक मूलभूत विशेषता है। Malloc मूलतः एक मानक फ़ंक्शन है, जबकि new एक ऑपरेटर है। बिना किसी आवश्यक कारण के C++ में Malloc का उपयोग नहीं किया जाना चाहिए।

न्यू/डिलीट को कभी भी मॉलोक/फ्री के साथ नहीं मिलाना चाहिए। मॉलोक के विपरीत, नए को ऑपरेटर के आकार की आवश्यकता नहीं है।

चाबी छीन लेना

  1. Malloc और new दोनों का उपयोग C++ प्रोग्राम में मेमोरी को गतिशील रूप से आवंटित करने के लिए किया जाता है।
  2. मॉलोक एक सी लाइब्रेरी फ़ंक्शन है जो एक निर्दिष्ट आकार की मेमोरी के ब्लॉक में एक पॉइंटर लौटाता है। वहीं, C++ में new एक ऑपरेटर है जो मेमोरी आवंटित करता है और एक निर्दिष्ट प्रकार का ऑब्जेक्ट बनाता है।
  3. न्यू मॉलोक की तुलना में अधिक सुरक्षित है क्योंकि यह सुनिश्चित करता है कि ऑब्जेक्ट के कंस्ट्रक्टर को कॉल किया जाए, जो त्रुटियों और मेमोरी लीक को रोक सकता है।

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

Malloc एक मानक C फ़ंक्शन है जिसका उपयोग केवल C++ में किया जा सकता है और यह कानूनी रूप से ओवरराइडिंग की अनुमति नहीं देता है। इसका मतलब मेमोरी आवंटन है और इसका उपयोग मेमोरी के ब्लॉक को आवंटित करने के लिए किया जाता है। न्यू एक ऑपरेटर है जिसका उपयोग केवल C++ में किया जाता है; इसका उपयोग C में नहीं किया जा सकता है और यह एक कंपाइलर के साथ मेमोरी के आकार की गणना करता है।

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

Malloc को ऑपरेटर के सटीक आकार को जानने की आवश्यकता है ताकि यह पता लगाया जा सके कि उसे कौन सा मेमोरी आकार आवंटित करना है। मॉलोक भी कॉल करने में असमर्थ है निर्माता. जब इसे पता चलता है कि मेमोरी में कुछ कमी है तो यह NULL पर वापस लौट आता है।

नए ऑपरेटर को मेमोरी के लिए स्थान निर्दिष्ट करने के लिए ऑपरेटर के सटीक आकार के संबंध में किसी पूर्व सूचना की आवश्यकता नहीं है। नया ऑपरेटर किसी ऑब्जेक्ट के कंस्ट्रक्टर को भी कॉल कर सकता है। यह एक लाने के लिए जाना जाता है अपवाद जब याददाश्त की कमी हो.

तुलना तालिका

तुलना के पैरामीटरमॉलोकनया
भाषा में स्थानMalloc का उपयोग C में अधिक बार किया जाता है। शायद ही कभी, और इसका उपयोग C++ में किया जाता है।
न्यू का उपयोग केवल C++ में किया जाता है।
रिटर्न यह शून्य की ओर लौटता है।
नया उचित प्रकार पर लौटता है।
आकारमॉलोक में, आकार की गणना मैन्युअल रूप से की जानी है।
न्यू में, कंपाइलर के आवश्यक आकार की गणना कंपाइलर द्वारा की जाती है
अधिभावीमॉलोक फ़ंक्शन को कानूनी रूप से ओवरराइड नहीं किया जा सकता है।
नया ऑपरेटर ओवरराइड करने का अवसर प्रदान करता है।
प्रकारमॉलोक एक मानक सी फ़ंक्शन है।
यह ==,+= आदि जैसे ऑपरेटरों का उपयोग करता है।
पर्याप्त स्मृति न होने पर व्यवहारमेमोरी की कमी होने पर Malloc NULL पर वापस आ जाता है।
मेमोरी की कमी के दौरान नया एक अपवाद लाता है।
आवंटन रद्द करनाएक मॉलोक() का मिलान मुफ़्त() से किया जाना चाहिए।
एक नए() का मिलान डिलीट() से किया जाना चाहिए।
के लिए मेमोरी आवंटित करता हैलगभग सब कुछ।
केवल सरणियों, वस्तुओं और संरचनाओं के लिए।

मॉलोक क्या है?

Malloc() मेमोरी आवंटन के लिए C में एक मानक लाइब्रेरी फ़ंक्शन है। इसका उपयोग मेमोरी के एक ब्लॉक को गतिशील रूप से एक विशिष्ट आकार के साथ आवंटित करने के लिए किया जाता है। मेमोरी का आकार बाइट्स में आवंटित किया गया है।

यह भी पढ़ें:  जावास्क्रिप्ट बनाम AngularJS: अंतर और तुलना

यह एक शून्य प्रकार का रिटर्न देता है सूचक चूँकि इसमें कुछ कचरा मूल्य होता है। यह निष्पादन के समय मेमोरी को प्रारंभ नहीं करता है।

Malloc फ़ंक्शन का उपयोग C++ में केवल तभी किया जाना चाहिए जब इसका उपयोग करना बहुत आवश्यक हो, अन्यथा, इसका उपयोग केवल C तक ही सीमित होना चाहिए। जब ​​Malloc को मेमोरी की कमी का एहसास होता है, तो यह तुरंत NULL पर वापस आ जाता है। यह मेमोरी इनिशियलाइज़ेशन नहीं करता है.

इसमें 2 तर्क हैं. एक मॉलोक() को हमेशा फ्री() से मेल खाना चाहिए। मॉलोक में मेमोरी के आकार की गणना मैन्युअल रूप से की जानी है। मेमोरी के आकार को आवंटित करने के लिए ऑपरेटर के आकार के बारे में पूर्व ज्ञान की आवश्यकता होती है।

यह किसी ऑब्जेक्ट के कंस्ट्रक्टर को कॉल करने में सक्षम नहीं है। एक मॉलोक फ़ंक्शन का उपयोग लगभग हर चीज़ के लिए मेमोरी आवंटित करने के लिए किया जा सकता है। मॉलोक फ़ंक्शन कानूनी रूप से ओवरराइडिंग की अनुमति नहीं देता है।

C++ में एक Malloc एक नए ऑपरेटर की तुलना में धीमी गति से काम करता है क्योंकि एक ऑपरेटर हमेशा एक फ़ंक्शन से तेज़ होता है।

सिंटैक्स:- पीटीआर = (कास्टटाइप*) मॉलोक(आकार);

नया क्या है?

New C++ में एक ऑपरेटर है जिसका उपयोग C में नहीं किया जा सकता है। नया ऑपरेटर किसी ऑब्जेक्ट के कंस्ट्रक्टर को कॉल कर सकता है और मेमोरी को इनिशियलाइज़ कर सकता है। मेमोरी आवंटित होने के बाद ही कंस्ट्रक्टर को कॉल किया जाता है।

कंपाइलर मेमोरी के आकार की गणना करता है। यह उचित प्रकार पर वापस आ जाता है। यह ==, += आदि जैसे ऑपरेटरों का उपयोग कर सकता है। नया ऑपरेटर केवल सरणियों, वस्तुओं और संरचनाओं के लिए मेमोरी आवंटित करता है।

C++ में, ढेर पर मेमोरी के आवंटन के लिए अनुरोध भेजने के लिए नए ऑपरेटर का उपयोग किया जाता है।

बशर्ते कि पर्याप्त मेमोरी उपलब्ध हो, नया ऑपरेटर इसे आरंभ करता है और उसके बाद नई आवंटित और गठित मेमोरी को पॉइंटर वेरिएबल में वापस करने के लिए काम करता है। एक नए() को हमेशा डिलीट() के साथ मिलान किया जाना चाहिए।

यह भी पढ़ें:  क्रूर बल बनाम अनुमानी खोज: अंतर और तुलना

इस ऑपरेटर का उपयोग गतिशील मेमोरी आवंटन, ऑब्जेक्ट निर्माण और विनाश के लिए किया जाता है। मेमोरी को फ्री स्टोर के नाम से जाने जाने वाले पूल से ऑब्जेक्ट के लिए आवंटित किया जाता है। यह मॉलोक की तुलना में बहुत तेजी से काम करता है क्योंकि यह एक ऑपरेटर है न कि कोई फ़ंक्शन। 

सिंटैक्स:- सूचक-चर = नया डेटा-प्रकार;

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

  1. Malloc एक मानक C फ़ंक्शन है, जबकि new एक ऑपरेटर है।
  2. Malloc का उपयोग मुख्य रूप से C में किया जाता है जबकि new का उपयोग केवल C++ में किया जाता है। Malloc का उपयोग C++ में केवल तभी किया जाना चाहिए जब यह आवश्यक हो।
  3. जब पर्याप्त मेमोरी नहीं होती है, तो मॉलोक NULL पर वापस आ जाता है जबकि new एक अपवाद फेंकता है।
  4. हमेशा एक Malloc() को free() के साथ और एक new() को delete के साथ मिलान किया जाना चाहिए। इन दोनों की अदला-बदली नहीं होनी चाहिए
  5. मॉलोक शून्य पर लौटता है जबकि नया उचित प्रकार पर लौटता है।
  6. मॉलोक लगभग किसी भी चीज़ और हर चीज़ के लिए मेमोरी आवंटित करता है। नया सरणियों, वस्तुओं और संरचनाओं के लिए मेमोरी आवंटित करता है।
  7. मॉलोक के लिए आकार की गणना मैन्युअल रूप से की जानी है, जबकि नए में, इसकी गणना कंपाइलर द्वारा स्वचालित रूप से की जाती है।
  8. Malloc फ़ंक्शन किसी ऑब्जेक्ट के कंस्ट्रक्टर को कॉल नहीं कर सकता, लेकिन एक नया ऑपरेटर कॉल कर सकता है।
  9. मॉलोक में ओवरराइडिंग की कानूनी तौर पर अनुमति नहीं है लेकिन नए में इसकी अनुमति है।
संदर्भ
  1. https://dl.acm.org/doi/abs/10.1145/1854273.1854303
  2. https://dl.acm.org/doi/abs/10.1145/2948618.2954331

अंतिम अद्यतन: 11 जून, 2023

बिंदु 1
एक अनुरोध?

मैंने आपको मूल्य प्रदान करने के लिए इस ब्लॉग पोस्ट को लिखने में बहुत मेहनत की है। यदि आप इसे सोशल मीडिया पर या अपने मित्रों/परिवार के साथ साझा करने पर विचार करते हैं, तो यह मेरे लिए बहुत उपयोगी होगा। साझा करना है ♥️

"मॉलोक बनाम न्यू: अंतर और तुलना" पर 12 विचार

  1. Malloc और New दोनों के लिए प्रदान किया गया सिंटैक्स उनके कार्यान्वयन को समझना आसान बनाता है। यह लेख जटिल अवधारणाओं को तोड़ने में उत्कृष्ट कार्य करता है।

    जवाब दें
  2. मैं C और C++ में Malloc के उपयोग की विस्तृत व्याख्या के साथ-साथ C++ में नए ऑपरेटर की विस्तृत विशेषताओं की सराहना करता हूं। बहुत जानकारीपूर्ण तुलना.

    जवाब दें
  3. C और C++ में Malloc और नई कार्यक्षमताओं का गहन विश्लेषण। दोनों मेमोरी आवंटन विधियों के पेशेवरों और विपक्षों पर प्रभावी ढंग से चर्चा की गई है।

    जवाब दें
  4. मॉलोक और न्यू के बारे में विस्तृत जानकारी, साथ ही उपयोग और व्यवहार के संदर्भ में उनकी तुलना, असाधारण रूप से अच्छी तरह से प्रस्तुत की गई है। प्रोग्रामर्स के लिए एक बेहतरीन पाठ।

    जवाब दें
  5. मॉलोक और न्यू के बीच हाइलाइट किए गए मुख्य अंतर उनके उपयोग के मामलों में अंतर करना आसान बनाते हैं। यह आलेख प्रोग्रामर्स के लिए एक मूल्यवान संसाधन है।

    जवाब दें
  6. यह आलेख मॉलोक और न्यू के बीच एक व्यापक तुलना प्रदान करता है, और स्पष्टीकरण बहुत स्पष्ट और अनुसरण करने में आसान हैं। C और C++ प्रोग्रामिंग में रुचि रखने वालों के लिए अवश्य पढ़ें।

    जवाब दें
  7. वह अनुभाग जो मेमोरी की कमी होने पर मॉलोक और न्यू के व्यवहार को रेखांकित करता है, विशेष रूप से व्यावहारिक है और सी और सी++ में गतिशील मेमोरी आवंटन की समझ को बढ़ाता है।

    जवाब दें
  8. प्रदान की गई तुलना तालिका स्पष्ट और संक्षिप्त तरीके से मॉलोक और न्यू के बीच अंतर को संक्षेप में प्रस्तुत करने में मदद करती है। मजा आ गया पढ कर.

    जवाब दें
  9. यह लेख मैलोक और न्यू का उपयोग करके मेमोरी आवंटन प्रक्रिया को उजागर करने में बहुत अच्छा काम करता है, और वे मेमोरी आरंभीकरण और मेमोरी को मुक्त करने के मामले में कैसे भिन्न हैं।

    जवाब दें
  10. यह आलेख स्पष्ट रूप से Malloc और New के बीच अंतर, C और C++ में उनके उपयोग और दोनों फ़ंक्शंस और ऑपरेटरों के विशिष्ट व्यवहारों की व्याख्या करता है। बहुत सूचनाप्रद।

    जवाब दें

एक टिप्पणी छोड़ दो

क्या आप इस लेख को बाद के लिए सहेजना चाहते हैं? अपने लेख बॉक्स में सहेजने के लिए नीचे दाएं कोने में दिल पर क्लिक करें!