புதிய மற்றும் மல்லோக்கிற்கு இடையிலான வேறுபாடு ()

நூலாசிரியர்: Laura McKinney
உருவாக்கிய தேதி: 1 ஏப்ரல் 2021
புதுப்பிப்பு தேதி: 5 மே 2024
Anonim
புதிய vs. malloc (தரவு சுருக்கத்திற்கான C++)
காணொளி: புதிய vs. malloc (தரவு சுருக்கத்திற்கான C++)

உள்ளடக்கம்


புதிய மற்றும் malloc () இரண்டும் நினைவகத்தை மாறும் வகையில் ஒதுக்கப் பயன்படுகின்றன. இருப்பினும், புதிய மற்றும் malloc () பல தீமைகளில் வேறுபட்டவை. புதிய மற்றும் malloc () க்கு இடையிலான முதன்மை வேறுபாடு அதுதான் புதிய ஆபரேட்டர், ஒரு கட்டமைப்பாக பயன்படுத்தப்படுகிறது. மறுபுறம், தி , malloc () இது ஒரு நிலையான நூலக செயல்பாடு, இது இயக்க நேரத்தில் நினைவகத்தை ஒதுக்க பயன்படுகிறது. அவற்றுக்கிடையேயான மற்ற வேறுபாடுகள் ஒப்பீட்டு விளக்கப்படத்தில் கீழே விவாதிக்கப்பட்டுள்ளன:

  1. ஒப்பீட்டு விளக்கப்படம்
  2. வரையறை
  3. முக்கிய வேறுபாடுகள்
  4. முடிவுரை

ஒப்பீட்டு விளக்கப்படம்

ஒப்பீட்டுக்கான அடிப்படைபுதியmalloc ()
மொழிஆபரேட்டர் புதியது சி ++, ஜாவா மற்றும் சி # இன் ஒரு குறிப்பிட்ட அம்சமாகும். Malloc () செயல்பாடு சி இன் அம்சமாகும்.
இயற்கை"புதியது" ஒரு ஆபரேட்டர்.malloc () என்பது ஒரு செயல்பாடு.
அளவு( )புதியது குறிப்பிட்ட வகைக்கு போதுமான நினைவகத்தை ஒதுக்குவதற்கு அளவு ஆபரேட்டர் தேவையில்லை malloc க்கு எந்த அளவிலான நினைவக அளவை ஒதுக்க வேண்டும் என்பதை அறிய சைஸ்அஃப் ஆபரேட்டர் தேவைப்படுகிறது.
கன்ஸ்ட்ரக்டர் ஆபரேட்டர் புதியது ஒரு பொருளின் கட்டமைப்பாளரை அழைக்க முடியும்.malloc () ஒரு கட்டமைப்பாளருக்கு அழைப்பு விடுக்க முடியாது.
துவக்கம்புதிய ஆபரேட்டர் ஒரு பொருளை நினைவகத்தை ஒதுக்கும்போது அதை துவக்க முடியும்.நினைவக துவக்கத்தை malloc இல் செய்ய முடியவில்லை.
ஓவர்லோடிங் ஆபரேட்டர் புதியதை ஓவர்லோட் செய்யலாம்.Malloc () ஐ ஒருபோதும் அதிக சுமை செய்ய முடியாது.
தோல்விதோல்வியில், ஆபரேட்டர் புதிய விதிவிலக்கு வீசுகிறார்.தோல்வியுற்றால், malloc () ஒரு NULL ஐ வழங்குகிறது.
ஒதுக்கீடு விடுத்தல்மெமரி ஒதுக்கீடு புதியது, "நீக்கு" ஐப் பயன்படுத்தி ஒதுக்கப்பட்டது.Malloc () இன் நினைவக ஒதுக்கீடு ஒரு இலவச () செயல்பாட்டைப் பயன்படுத்தி ஒதுக்கப்படுகிறது.
மறுபகிர்மானத்தைபுதிய ஆபரேட்டர் நினைவகத்தை மறு ஒதுக்கீடு செய்யாது.Malloc () ஆல் ஒதுக்கப்பட்ட நினைவகத்தை realloc () ஐப் பயன்படுத்தி மறு ஒதுக்கீடு செய்யலாம்.
மரணதண்டனைஆபரேட்டர் புதிய செயல்பாட்டு நேரத்தை குறைக்கிறது.Malloc () செயல்படுத்த அதிக நேரம் தேவைப்படுகிறது.


புதிய வரையறை

ஆபரேட்டர் புதிய நினைவக ஒதுக்கீட்டு ஆபரேட்டர், இது நினைவகத்தை மாறும் வகையில் ஒதுக்குகிறது. புதிய ஆபரேட்டர் குவியலில் நினைவகத்தை ஒதுக்குகிறது மற்றும் அந்த நினைவகத்தின் தொடக்க முகவரியை ஒரு குறிப்பு மாறிக்கு ஒதுக்குகிறது. புதிய ஆபரேட்டர் C இல் உள்ள malloc () ஐ ஒத்திருக்கிறது. இருப்பினும், C ++ கம்பைலர் malloc () உடன் இணக்கமானது, ஆனால், புதிய ஆபரேட்டரை malloc () ஐ விட சில நன்மைகள் இருப்பதால் அதைப் பயன்படுத்துவது நல்லது. புதிய ஆபரேட்டரின் தொடரியல் பின்வருமாறு:

type variable_name = புதிய வகை (அளவுரு_ பட்டியல்);

இங்கே, "வகை" என்பது நினைவகத்தை ஒதுக்க வேண்டிய மாறியின் தரவு வகையை குறிக்கிறது. “Variable_name” என்ற சொல் குறிப்பு மாறிக்கு கொடுக்கப்பட்ட பெயர், இது சுட்டிக்காட்டிக்கு நினைவகத்தை வைத்திருக்கும். இங்கே அடைப்புக்குறிப்பு கட்டமைப்பாளரின் அழைப்பைக் குறிப்பிடுகிறது. அளவுரு_ பட்டியல் என்பது புதிதாக கட்டப்பட்ட பொருளைத் தொடங்க கட்டமைப்பாளருக்கு அனுப்பப்படும் மதிப்புகளின் பட்டியல்.

புதிய ஆபரேட்டர் ஒரு குறிப்பிட்ட வகையின் பொருளுக்கு தேவையான நினைவகத்தை ஒதுக்குகிறார். எனவே, இதற்கு ஒரு அளவு () ஆபரேட்டர் தேவையில்லை அல்லது நினைவகத்தை மறு ஒதுக்கீடு செய்ய realloc () ஐப் பயன்படுத்தும் malloc () போன்ற நினைவகத்தை மறுஅளவிடுவதற்கு இது தேவையில்லை. புதிய ஆபரேட்டர் ஒரு கட்டுமானமாகும்; இது ஒரு பொருளின் கட்டமைப்பாளரை அழைக்கிறது, அறிவிப்பு பொதுவாக பொருளை துவக்க பயன்படுகிறது.


புதிய ஆபரேட்டர் குவியலில் நினைவகத்தை ஒதுக்குகிறார் மற்றும் குவியலின் அளவு குறைவாக உள்ளது என்பதை நாங்கள் அறிவோம். எனவே, குவியல் நினைவகத்திற்கு வெளியே இருந்தால், புதிய ஆபரேட்டர் நினைவகத்தை ஒதுக்க முயற்சித்தால், அது புதிய ஆபரேட்டரின் தோல்விக்கு வழிவகுக்கும். புதிய ஆபரேட்டர் நினைவகத்தை ஒதுக்கத் தவறினால், அது ஒரு விதிவிலக்கைத் தூண்டும், மேலும் உங்கள் குறியீடு அந்த விதிவிலக்கைக் கையாள முடியாவிட்டால், நிரல் அசாதாரணமாக நிறுத்தப்படும்.

புதிய ஆபரேட்டரால் ஒதுக்கப்பட்ட நினைவகத்தை நீக்கு ஆபரேட்டரைப் பயன்படுத்தி விடுவிக்க முடியும். புதிய ஆபரேட்டர் செயல்பாட்டு நேரத்தை குறைக்கிறது, ஏனெனில் இது ஒரு ஆபரேட்டர், ஒரு செயல்பாடு அல்ல.

Malloc இன் வரையறை ()

தி , malloc () குவியலில் கோரப்பட்ட நினைவகத்தை ஒதுக்க பயன்படும் ஒரு செயல்பாடு. இந்த முறை ‘வெற்றிட’ வகையின் சுட்டிக்காட்டி மேலும் தருகிறது, இது ஒரு குறிப்பிட்ட வகையின் நினைவகத்திற்கு ஒரு சுட்டிக்காட்டி பெற வார்ப்பு தட்டச்சு மற்றும் நினைவகத்திற்கான இந்த சுட்டிக்காட்டி ஒரு குறிப்பு மாறிக்கு ஒதுக்கப்படுகிறது. Mloc () செயல்பாடு C ++ இல் உள்ள புதிய ஆபரேட்டரைப் போன்றது, ஏனெனில் இது நினைவகத்தை மாறும் வகையில் ஒதுக்க பயன்படுகிறது. Malloc () ஒரு நிலையான நூலக செயல்பாடு. Malloc () செயல்பாட்டின் தொடரியல் பின்வருமாறு:

type variable_name = (type *) malloc (sizeof (type));

இங்கே, "வகை" என்பது நினைவகத்தை ஒதுக்க வேண்டிய மாறியின் தரவு வகையை குறிக்கிறது. Variable_name என்பது குறிப்பு மாறியின் பெயர், இது malloc () ஆல் வழங்கப்பட்ட சுட்டிக்காட்டி ஒதுக்கப்படும். (வகை *) ஒரு குறிப்பிட்ட வகையிலான நினைவகத்திற்கு ஒரு சுட்டிக்காட்டி பெற வகை வார்ப்பு விவரிக்கிறது. அளவு () malloc () ஐ விவரிக்கிறது, என்ன நினைவக அளவு தேவைப்படுகிறது.

Malloc () க்கு வகை வார்ப்பு தேவைப்படுகிறது, ஏனெனில் malloc () ஆல் திரும்பிய சுட்டிக்காட்டி வெற்றிட வகையாகும், எனவே, சுட்டிக்காட்டிக்கு ஒரு வகையை ஒதுக்க, வகை வார்ப்பு தேவைப்படுகிறது. அளவு () தேவைப்படுகிறது, ஏனெனில் malloc () ஒரு மூல நினைவகத்தை ஒதுக்குகிறது, எனவே malloc () செயல்பாட்டை எந்த நினைவக அளவை ஒதுக்க வேண்டும் என்று சொல்ல வேண்டும். ஒதுக்கப்பட்ட நினைவகம் போதுமானதாக இல்லாவிட்டால், அதை மறுஅளவிடலாம் அல்லது மறு ஒதுக்கீடு () ஐப் பயன்படுத்தி மறு ஒதுக்கீடு செய்யலாம்.

Malloc () செயல்பாடு குவியலில் நினைவகத்தை ஒதுக்குகிறது. வழக்கில், குவியல் நினைவகத்திற்கு வெளியே இருந்தால், malloc () செயல்பாடு ஒரு NULL சுட்டிக்காட்டி அளிக்கிறது. எனவே, malloc () ஆல் வழங்கப்பட்ட சுட்டிக்காட்டி கொண்ட குறிப்பு மாறி, அதைப் பயன்படுத்துவதற்கு முன்பு சரிபார்க்க வேண்டும், இல்லையெனில் அது கணினி செயலிழப்பை ஏற்படுத்தக்கூடும்.

Malloc () செயல்பாட்டால் ஒதுக்கப்பட்ட நினைவகம் இலவச () ஐப் பயன்படுத்தி ஒதுக்கப்படுகிறது. செயல்பாட்டு அழைப்பு மேல்நிலைக்கு வழிவகுக்கும் என்பதால், malloc () செயல்படுத்த அதிக நேரம் தேவைப்படுகிறது.

  1. புதிய ஆபரேட்டர் என்பது சி ++ இல் அறிமுகப்படுத்தப்பட்ட ஒரு கட்டுமானமாகும், இது ஜாவா, சி # போன்றவற்றில் பயன்படுத்தப்படுகிறது. மறுபுறம் malloc () என்பது சி மொழியில் மட்டுமே காணப்படும் ஒரு நிலையான நூலக செயல்பாடு மற்றும் சி ++ ஆல் ஆதரிக்கப்படுகிறது.
  2. புதிய ஆபரேட்டர் ஒரு குறிப்பிட்ட வகையின் பொருளுக்கு போதுமான நினைவகத்தை ஒதுக்குகிறது, எனவே அதற்கு அளவு ஆபரேட்டர் தேவையில்லை. மறுபுறம், malloc () செயல்பாட்டிற்கு sizeof () ஆபரேட்டர் தேவைப்படுகிறது, இது எந்த நினைவக அளவை ஒதுக்க வேண்டும் என்பதை செயல்பாட்டிற்கு தெரியப்படுத்த வேண்டும்.
  3. புதிய ஆபரேட்டர் அறிவிப்பின் போது பொருளின் கட்டமைப்பாளரை அழைக்க முடியும். மறுபுறம், malloc () செயல்பாடு கட்டமைப்பாளரை அழைக்க முடியாது.
  4. ஆபரேட்டர் ‘புதியது’ ஓவர்லோட் ஆகலாம், ஆனால் malloc () முடியவில்லை.
  5. புதிய ஆபரேட்டர் நினைவகத்தை ஒதுக்கத் தவறினால், அது ஒரு விதிவிலக்கை வீசுகிறது, அது குறியீட்டால் கையாளப்பட வேண்டும், இல்லையெனில் நிரல் நிறுத்தப்படும். மறுபுறம், malloc () செயல்பாடு நினைவகத்தை ஒதுக்கத் தவறினால் ஒரு NULL சுட்டிக்காட்டி அளிக்கிறது. இதைச் சரிபார்க்காமல் சுட்டிக்காட்டி பயன்படுத்தப்பட்டால், அது கணினி செயலிழப்பை ஏற்படுத்தும்.
  6. புதிய ஆபரேட்டரைப் பயன்படுத்தி ஒதுக்கப்பட்ட நினைவகத்தை ‘நீக்கு’ பயன்படுத்தி ஒதுக்கி வைக்கலாம். மறுபுறம், malloc () செயல்பாட்டைப் பயன்படுத்தி ஒதுக்கப்பட்ட நினைவகத்தை இலவச () ஐப் பயன்படுத்தி ஒதுக்கி வைக்கலாம்.
  7. புதிய ஆபரேட்டரைப் பயன்படுத்தி நினைவகம் ஒதுக்கப்பட்டதும், அதை எப்படியும் மறுஅளவிட முடியாது. மறுபுறம், malloc () செயல்பாட்டைப் பயன்படுத்தி ஒதுக்கப்பட்ட நினைவகத்தை realloc () செயல்பாட்டைப் பயன்படுத்தி மறு ஒதுக்கீடு செய்யலாம் (மறுஅளவிடலாம்).
  8. Malloc () உடன் ஒப்பிடும்போது புதியதை செயல்படுத்தும் நேரம் குறைவாக உள்ளது, ஏனெனில் malloc ஒரு செயல்பாடு மற்றும் புதியது ஒரு கட்டமைப்பாகும்.

முடிவுரை:

மல்லோக் () செயல்பாடு நினைவகத்தை மாறும் வகையில் ஒதுக்குவதற்கான பழைய வழியாகும். இப்போதெல்லாம், புதிய ஆபரேட்டர் இயக்க நேரத்தில் நினைவகத்தை ஒதுக்க பயன்படுகிறது, ஏனெனில் இது malloc () ஐ விட சில நன்மைகளைக் கொண்டுள்ளது.