नवीन आणि मॅलोक दरम्यान फरक ()

लेखक: Laura McKinney
निर्मितीची तारीख: 1 एप्रिल 2021
अद्यतन तारीख: 5 मे 2024
Anonim
W4_3 - Heap
व्हिडिओ: W4_3 - Heap

सामग्री


नवीन आणि मॅलोक () दोन्ही मेमरीचे गतिकरित्या वाटप करण्यासाठी वापरले जातात. जरी, बरेचसे मध्ये नवीन आणि मॅलोक () भिन्न आहेत. नवीन आणि मॅलोक () मधील प्राथमिक फरक तो आहे नवीन ऑपरेटर आहे जो कंस्ट्रक्ट म्हणून वापरला जातो. दुसरीकडे, द मॅलोक () हे एक मानक लायब्ररी फंक्शन आहे, जे रनटाइमवेळी मेमरीचे वाटप करण्यासाठी वापरले जाते. त्यांच्यामधील इतर भिन्नता खाली तुलना चार्टमध्ये चर्चा केल्या आहेत:

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. निष्कर्ष

तुलना चार्ट

तुलनासाठी आधारनवीनमॅलोक ()
भाषाऑपरेटर नवीन हे C ++, जावा आणि C # चे वैशिष्ट्य आहे. फंक्शन मॅलोक () हे सी चे वैशिष्ट्य आहे.
निसर्ग"नवीन" एक ऑपरेटर आहे.malloc () हे फंक्शन आहे.
आकारात ()नवीनला आकाराच्या ऑपरेटरची आवश्यकता नाही परंतु विशिष्ट प्रकारच्या पुरेशी मेमरी वाटप करा मॅलोकला कोणत्या मेमरी आकाराचे वाटप करावे हे जाणून घेण्यासाठी आकाराच्या ऑपरेटरची आवश्यकता असते.
बांधकाम करणारा ऑपरेटर नवीन ऑब्जेक्टच्या कन्स्ट्रक्टरला कॉल करू शकतो.malloc () कन्स्ट्रक्टरला कॉल करु शकत नाही.
आरंभऑपरेटर नवीन त्याला मेमरी वाटप करताना ऑब्जेक्टला आरंभ करू शकतो.मॅलोकमध्ये मेमरी इनिशिएलायझेशन करणे शक्य झाले नाही.
ओव्हरलोडिंग ऑपरेटर नवीन ओव्हरलोड केले जाऊ शकतात.मॅलोक () कधीही ओव्हरलोड केले जाऊ शकत नाही.
अपयशअपयशी झाल्यास ऑपरेटर नवीन अपवाद टाकतो.अपयशी झाल्यास, मॅलोक () एक एनयूएलएल परत करते.
विलोपननवीन द्वारे मेमरी newलोकेशन, "हटवा" वापरुन डीओलोकेटेड.Malloc () द्वारे मेमरी allocलोकेशन विनामूल्य () फंक्शन वापरुन डीओलोकेटेड केले आहे.
रीलोकेशननवीन ऑपरेटर मेमरी रीलोकॉट करत नाही.Malloc () द्वारे वाटप केलेल्या मेमरीला रीलोक () वापरून पुन्हा रिकोलॉट केले जाऊ शकते.
अंमलबजावणीऑपरेटर नूतनीकरण वेळ कमी करते.मॅलोक () ला अंमलबजावणीसाठी अधिक वेळ आवश्यक आहे.


नवीन व्याख्या

ऑपरेटर नवीन मेमरी ationलोकेशन ऑपरेटर आहे जो मेमरीला गतिकरित्या वाटप करतो. नवीन ऑपरेटर रिकामी मेमरीचे वाटप करतो आणि त्या मेमरीचा प्रारंभ पत्ता परत बदलतो जो संदर्भ व्हेरिएबलला दिलेला असतो. नवीन ऑपरेटर सी मधील मालोक () प्रमाणेच आहे. तथापि, सी ++ कंपाइलर मॅलोक () सह सुसंगत आहे परंतु, नवीन ऑपरेटर वापरणे चांगले आहे कारण त्याचे मॅलोक () वर काही फायदे आहेत. नवीन ऑपरेटरचा वाक्यरचना खालीलप्रमाणे आहेः

प्रकार व्हेरिएबल_नाव = नवीन प्रकार (पॅरामीटर_सूची);

येथे, “टाइप” म्हणजे व्हेरिएबलचा डेटासेट टाइप ज्यासाठी मेमरी वाटप करायची आहे. "व्हेरिएबल_नाव" हा शब्द संदर्भ व्हेरिएबलला दिलेला नाव आहे जो पॉईंटरला मेमरीमध्ये धरून ठेवतो. येथे कंसात कंस्ट्रक्टरचा कॉलिंग निर्दिष्ट आहे. पॅरामीटर_लिस्ट म्हणजे नव्याने तयार केलेल्या ऑब्जेक्टला प्रारंभ करण्यासाठी कन्स्ट्रक्टरला दिलेल्या मूल्यांची यादी.

नवीन ऑपरेटर विशिष्ट प्रकारच्या ऑब्जेक्टसाठी आवश्यक असलेली पुरेशी मेमरी वाटप करतो. म्हणून, त्याला आकार () ऑपरेटरची आवश्यकता नाही किंवा मेमरी रीलोकॉट करण्यासाठी रीलोक () वापरणार्‍या मॅलोक () सारख्या मेमरीचे आकार बदलण्याची आवश्यकता नाही. नवीन ऑपरेटर एक बांधकाम आहे; हे ऑब्जेक्टच्या कन्स्ट्रक्टरला डिक्लरेशन असे म्हणतात जे सामान्यत: ऑब्जेक्ट आरंभ करण्यासाठी वापरले जाते.


आम्हाला माहित आहे की नवीन ऑपरेटर ढीगमध्ये मेमरी वाटप करतो आणि ढीगचा आकार मर्यादित असतो. म्हणून, जर ढीग मेमरीच्या बाहेर नसल्यास आणि नवीन ऑपरेटर मेमरीचे वाटप करण्याचा प्रयत्न करत असेल तर ते नवीन ऑपरेटरला अपयशी ठरू शकते. नवीन ऑपरेटर मेमरीचे वाटप करण्यात अयशस्वी झाल्यास ते अपवाद ठरेल आणि आपला कोड तो अपवाद हाताळण्यात अक्षम असल्यास प्रोग्राम विलक्षणरित्या समाप्त होईल.

ऑपरेटरद्वारे वाटप केलेली मेमरी डिलीट ऑपरेटरचा वापर करून मोकळी केली जाऊ शकते. नवीन ऑपरेटर फंक्शन नसून ऑपरेटर असल्याने एक्झिक्युशनची वेळ कापतो.

मॅलोक () ची व्याख्या

मॅलोक () हे फंक्शन आहे जे ढीग वर मेमरीची विनंती केलेली रक्कम वाटप करण्यासाठी वापरले जाते. मेथड ‘शून्य’ प्रकाराचा पॉईंटर परत करते जी पुढे आहे, विशिष्ट प्रकारच्या मेमरीला पॉईंटर मिळविण्यासाठी टाईप कास्ट आणि मेमरीला हे पॉईंटर संदर्भ व्हेरिएबलला नियुक्त केले आहे. मॅलोक () फंक्शन सी ++ मधील नवीन ऑपरेटरसारखेच आहे कारण ते मेमरीला गतिकरित्या वाटप करण्यासाठी वापरले जाते. मॅलोक () मानक लायब्ररीचे कार्य आहे. मॅलोक () फंक्शनचा सिंटॅक्स खालीलप्रमाणे आहे:

प्रकार व्हेरिएबल_नाव = (प्रकार *) malloc (आकार (प्रकार));

येथे, “टाइप” व्हेरिएबलचा डेटासेट दर्शवितो ज्यासाठी मेमरी वाटप करायची आहे. व्हेरिएबल_नाव संदर्भ व्हेरिएबलचे नाव आहे ज्यास पॉईंटर malloc () ने दिले जाईल. (प्रकार *) विशिष्ट प्रकारात मेमरीला पॉईंटर मिळविण्यासाठी टाइप केलेल्या कास्टिंगचे वर्णन करते. आकारात () मॅलोक () चे वर्णन करते, जे मेमरी आकार आवश्यक आहे.

मॅलोक () ला टाइप कास्टिंग आवश्यक आहे कारण मॅलोकने परत केलेला पॉईंटर () पॉईंटर रिकामा प्रकारचा असतो, म्हणून, पॉईंटरला एखादा प्रकार प्रदान करण्यासाठी, टाइप कास्टिंग आवश्यक आहे. आकार () आवश्यक आहे कारण फंक्शन मॅलोक () कच्ची मेमरी वाटप करतो म्हणून, मॅलोक () फंक्शनला सांगणे आवश्यक आहे की त्याला कोणत्या मेमरी साइजचे वाटप करावे लागेल. वाटप केलेली मेमरी पुरेसे नसल्यास, त्याचे आकार बदलले जाऊ शकते किंवा रीलोक () वापरून रीलोकॉट केले जाऊ शकते.

Malloc () फंक्शन हेपवर मेमरीचे वाटप करते. जर नंतर, ढीग मेमरीच्या बाहेर नाही तर मॅलोक () फंक्शन एक एनयूएलएल पॉईंटर मिळवते. म्हणूनच, malloc () ने परत केलेले पॉईंटर असलेले संदर्भ व्हेरिएबल ते वापरण्यापूर्वी तपासले पाहिजे, अन्यथा यामुळे सिस्टम क्रॅश होऊ शकते.

Malloc () फंक्शनद्वारे वाटप केलेली मेमरी विनामूल्य () वापरून डीलोकेट केली जाते. जसे फंक्शन कॉल ओव्हरहेडकडे जाते, मॅलोक () ला अंमलबजावणीसाठी अधिक वेळ आवश्यक असतो.

  1. नवीन ऑपरेटर सी ++ मध्ये सादर केलेला एक बांधकाम आहे आणि तो जावा, सी # इ. मध्ये वापरला जातो. दुसरीकडे मॅलोक () एक मानक लायब्ररी फंक्शन आहे जी केवळ सी भाषेमध्ये आढळते आणि सी ++ द्वारे समर्थित आहे.
  2. नवीन ऑपरेटर निर्दिष्ट प्रकारच्या ऑब्जेक्टसाठी पुरेशी मेमरी वाटप करतो, त्यास आकार बदलणार्‍या ऑपरेटरची आवश्यकता नसते. दुसरीकडे, मॅलोक () फंक्शनला आकारातील () ऑपरेटरची आवश्यकता असते जे त्या कार्यास कळवते की त्यास कोणत्या मेमरी आकाराचे वाटप करावे लागेल.
  3. नवीन ऑपरेटर घोषित करताना ऑब्जेक्टच्या कन्स्ट्रक्टरला कॉल करू शकते. दुसरीकडे, malloc () फंक्शन कन्स्ट्रक्टरला कॉल करू शकत नाही.
  4. ऑपरेटर ‘नवीन’ ओव्हरलोड केले जाऊ शकते परंतु मॅलोक () शक्य नाही.
  5. नवीन ऑपरेटर मेमरीचे वाटप करण्यात अयशस्वी झाल्यास, तो अपवाद टाकतो जो कोडद्वारे हाताळला जाणे आवश्यक आहे अन्यथा प्रोग्राम संपुष्टात येईल. दुसरीकडे, मॅलॉक () फंक्शन मेमरीचे वाटप करण्यात अयशस्वी झाल्यास एक एनयूएलएल पॉईंटर परत करते. पॉइंटर हे न तपासल्यास वापरल्यास त्याचा परिणाम सिस्टम क्रॅश होईल.
  6. नवीन ऑपरेटर वापरुन वाटप केलेली मेमरी ‘हटवा’ वापरून विपुल केली जाऊ शकते. दुसरीकडे, malloc () फंक्शन वापरुन वाटप केलेली मेमरी विनामूल्य () वापरुन कमी केली जाऊ शकते.
  7. एकदा नवीन ऑपरेटरचा वापर करून मेमरीचे वाटप केले की तरीही त्याचे आकार बदलले जाऊ शकत नाही. दुसरीकडे, malloc () फंक्शन वापरुन वाटप केलेली मेमरी रीलोक () फंक्शन वापरून रीलोकेट (रीसाइझ्ड) केली जाऊ शकते.
  8. मॅलोक () च्या तुलनेत नवीन कार्यान्वित करण्याची वेळ कमी आहे कारण मॅलोक हे एक फंक्शन आहे आणि नवीन कंस्ट्रक्ट आहे.

निष्कर्ष:

मेलोक () फंक्शन हा मेमरीला गतिकरित्या वाटप करण्याचा जुना मार्ग आहे. आजकाल, नवीन ऑपरेटरचा उपयोग रनटाइम वेळी मेमरीचे वाटप करण्यासाठी केला जातो कारण त्याचे मॅलोक () पेक्षा काही विशिष्ट फायदे आहेत.