క్రొత్త మరియు మాలోక్ మధ్య వ్యత్యాసం ()

రచయిత: Laura McKinney
సృష్టి తేదీ: 1 ఏప్రిల్ 2021
నవీకరణ తేదీ: 5 మే 2024
Anonim
W4_3 - Heap
వీడియో: W4_3 - Heap

విషయము


క్రొత్త మరియు మాలోక్ () రెండూ మెమరీని డైనమిక్‌గా కేటాయించడానికి ఉపయోగిస్తారు. అయినప్పటికీ, క్రొత్త మరియు మాలోక్ () చాలా నష్టాలలో భిన్నంగా ఉంటాయి. క్రొత్త మరియు మాలోక్ () మధ్య ప్రాథమిక వ్యత్యాసం అది కొత్త ఆపరేటర్, నిర్మాణంగా ఉపయోగించబడుతుంది. మరోవైపు, ది malloc () ఇది ప్రామాణిక లైబ్రరీ ఫంక్షన్, ఇది రన్‌టైమ్‌లో మెమరీని కేటాయించడానికి ఉపయోగిస్తారు. వాటి మధ్య ఉన్న ఇతర తేడాలు పోలిక చార్టులో క్రింద చర్చించబడ్డాయి:

  1. పోలిక చార్ట్
  2. నిర్వచనం
  3. కీ తేడాలు
  4. ముగింపు

పోలిక చార్ట్

పోలిక కోసం ఆధారంకొత్తmalloc ()
భాషాఆపరేటర్ కొత్తది C ++, జావా మరియు సి # యొక్క నిర్దిష్ట లక్షణం. ఫంక్షన్ malloc () సి యొక్క లక్షణం.
ప్రకృతి"క్రొత్తది" ఒక ఆపరేటర్.malloc () ఒక ఫంక్షన్.
sizeof ()క్రొత్తదానికి నిర్దిష్ట రకం కోసం తగినంత మెమరీని కేటాయించాల్సిన అవసరం లేదు malloc కి సైజుఆఫ్ ఆపరేటర్‌కు ఏ మెమరీ సైజు కేటాయించాలో తెలుసుకోవాలి.
నమూనా రచయిత ఆపరేటర్ కొత్త ఒక వస్తువు యొక్క కన్స్ట్రక్టర్ను పిలుస్తారు.malloc () ఒక కన్స్ట్రక్టర్‌కు కాల్ చేయలేము.
మొదలుపెట్టటంఆపరేటర్ కొత్త వస్తువుకు మెమరీని కేటాయించేటప్పుడు దాన్ని ప్రారంభించవచ్చు.మాలోక్‌లో మెమరీ ప్రారంభించడం సాధ్యం కాలేదు.
ఓవర్లోడింగ్ ఆపరేటర్ కొత్తని ఓవర్‌లోడ్ చేయవచ్చు.Malloc () ని ఎప్పుడూ ఓవర్‌లోడ్ చేయలేము.
వైఫల్యంవైఫల్యంపై, ఆపరేటర్ కొత్త మినహాయింపు విసురుతాడు.విఫలమైనప్పుడు, malloc () ఒక NULL ను అందిస్తుంది.
deallocationమెమరీ కేటాయింపు క్రొత్తది, "తొలగించు" ఉపయోగించి డీలోకేట్ చేయబడింది.మాలోక్ () ద్వారా మెమరీ కేటాయింపు ఉచిత () ఫంక్షన్‌ను ఉపయోగించి డీలోకేట్ చేయబడుతుంది.
కేటాయింపుకుక్రొత్త ఆపరేటర్ మెమరీని తిరిగి కేటాయించదు.మాలోక్ () ద్వారా కేటాయించిన మెమరీని రీలోక్ () ఉపయోగించి తిరిగి కేటాయించవచ్చు.
అమలుఆపరేటర్ కొత్త అమలు సమయాన్ని తగ్గిస్తుంది.Malloc () అమలు చేయడానికి ఎక్కువ సమయం అవసరం.


క్రొత్త నిర్వచనం

ఆపరేటర్ కొత్త మెమరీ కేటాయింపు ఆపరేటర్, ఇది మెమరీని డైనమిక్‌గా కేటాయిస్తుంది. క్రొత్త ఆపరేటర్ కుప్పలో మెమరీని కేటాయిస్తుంది మరియు రిఫరెన్స్ వేరియబుల్‌కు కేటాయించిన ఆ మెమరీ యొక్క ప్రారంభ చిరునామాను తిరిగి ఇస్తుంది. కొత్త ఆపరేటర్ సి లోని మాలోక్ () ను పోలి ఉంటుంది. అయితే, సి ++ కంపైలర్ మాలోక్ () తో అనుకూలంగా ఉంటుంది, అయితే, కొత్త ఆపరేటర్‌ను మాలోక్ () కంటే కొన్ని ప్రయోజనాలు ఉన్నందున ఉపయోగించడం మంచిది. కొత్త ఆపరేటర్ యొక్క వాక్యనిర్మాణం క్రింది విధంగా ఉంది:

రకం వేరియబుల్_పేరు = క్రొత్త రకం (పారామితి_ జాబితా);

ఇక్కడ, “రకం” అనేది మెమరీని కేటాయించాల్సిన వేరియబుల్ యొక్క డేటాటైప్‌ను సూచిస్తుంది. “వేరియబుల్_ నేమ్” అనే పదం రిఫరెన్స్ వేరియబుల్‌కు ఇచ్చిన పేరు, ఇది పాయింటర్‌ను మెమరీకి కలిగి ఉంటుంది. ఇక్కడ కుండలీకరణం కన్స్ట్రక్టర్ యొక్క కాలింగ్‌ను నిర్దేశిస్తుంది. పారామితి_ జాబితా అనేది కొత్తగా నిర్మించిన వస్తువును ప్రారంభించడానికి కన్స్ట్రక్టర్‌కు పంపిన విలువల జాబితా.

కొత్త ఆపరేటర్ ఒక నిర్దిష్ట రకం వస్తువుకు అవసరమైన మెమరీని కేటాయిస్తుంది. అందువల్ల, దీనికి సైజుఆఫ్ () ఆపరేటర్ అవసరం లేదు లేదా మెమరీని పున oc పరిమాణం చేయడానికి రిలోక్ () ను ఉపయోగించే మాలోక్ () వంటి మెమరీని పున ize పరిమాణం చేయవలసిన అవసరం లేదు. కొత్త ఆపరేటర్ ఒక నిర్మాణం; ఇది వస్తువు యొక్క కన్స్ట్రక్టర్ అని పిలుస్తుంది, అయితే డిక్లరేషన్ సాధారణంగా వస్తువును ప్రారంభించడానికి ఉపయోగిస్తారు.


కొత్త ఆపరేటర్ కుప్పలో మెమరీని కేటాయిస్తుందని మరియు కుప్ప పరిమాణం పరిమితం అని మాకు తెలుసు. కాబట్టి, కుప్ప జ్ఞాపకశక్తి లేకుండా ఉంటే మరియు కొత్త ఆపరేటర్ మెమరీని కేటాయించడానికి ప్రయత్నిస్తే, అది కొత్త ఆపరేటర్ యొక్క వైఫల్యానికి దారి తీస్తుంది. క్రొత్త ఆపరేటర్ మెమరీని కేటాయించడంలో విఫలమైతే, అది మినహాయింపును విసిరివేస్తుంది మరియు మీ కోడ్ ఆ మినహాయింపును నిర్వహించలేకపోతే, ప్రోగ్రామ్ అసాధారణంగా ముగుస్తుంది.

ఆపరేటర్ కొత్తగా కేటాయించిన మెమరీని డిలీట్ ఆపరేటర్ ఉపయోగించి విముక్తి చేయవచ్చు. క్రొత్త ఆపరేటర్ అమలు సమయం తగ్గించుకుంటుంది, ఎందుకంటే ఇది ఆపరేటర్, ఫంక్షన్ కాదు.

మాలోక్ యొక్క నిర్వచనం ()

ది malloc () కుప్పపై అభ్యర్థించిన మెమరీని కేటాయించడానికి ఉపయోగించే ఒక ఫంక్షన్. ఈ పద్ధతి ‘శూన్య’ రకం యొక్క పాయింటర్‌ను తిరిగి ఇస్తుంది, పేర్కొన్న రకం యొక్క మెమరీకి పాయింటర్‌ను పొందడానికి కాస్ట్ టైప్ చేయండి మరియు మెమరీకి ఈ పాయింటర్ రిఫరెన్స్ వేరియబుల్‌కు కేటాయించబడుతుంది. మాలోక్ () ఫంక్షన్ C ++ లోని కొత్త ఆపరేటర్‌తో సమానంగా ఉంటుంది, ఎందుకంటే ఇది మెమరీని డైనమిక్‌గా కేటాయించడానికి ఉపయోగించబడుతుంది. మాలోక్ () ఒక ప్రామాణిక లైబ్రరీ ఫంక్షన్. Malloc () ఫంక్షన్ యొక్క వాక్యనిర్మాణం క్రింది విధంగా ఉంది:

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

ఇక్కడ, “రకం” అనేది మెమరీని కేటాయించాల్సిన వేరియబుల్ యొక్క డేటాటైప్‌ను సూచిస్తుంది. వేరియబుల్_పేరు అనేది రిఫరెన్స్ వేరియబుల్ యొక్క పేరు, దీనికి మాలోక్ () ద్వారా తిరిగి వచ్చిన పాయింటర్ కేటాయించబడుతుంది. (రకం *) ఒక నిర్దిష్ట రకంలో మెమరీకి పాయింటర్ పొందటానికి టైప్ కాస్టింగ్ గురించి వివరిస్తుంది. సైజుఆఫ్ () మాలోక్ () ను వివరిస్తుంది, ఏ మెమరీ పరిమాణం అవసరమో.

మాలోక్ () కు టైప్ కాస్టింగ్ అవసరం ఎందుకంటే మాలోక్ () ద్వారా తిరిగి వచ్చిన పాయింటర్ శూన్య రకం, కాబట్టి, పాయింటర్‌కు ఒక రకాన్ని కేటాయించడానికి, టైప్ కాస్టింగ్ అవసరం. సైజుఆఫ్ () అవసరం ఎందుకంటే ఫంక్షన్ malloc () ఒక ముడి మెమరీని కేటాయిస్తుంది, అందువల్ల malloc () ఫంక్షన్‌కు ఏ మెమరీ పరిమాణాన్ని కేటాయించాలో చెప్పాల్సిన అవసరం ఉంది. కేటాయించిన మెమరీ సరిపోకపోతే, దాన్ని పున ize పరిమాణం చేయవచ్చు లేదా రీలోక్ () ను ఉపయోగించి తిరిగి కేటాయించవచ్చు.

Malloc () ఫంక్షన్ కుప్పపై మెమరీని కేటాయిస్తుంది. ఒకవేళ, కుప్ప జ్ఞాపకశక్తి లేకుండా ఉంటే, malloc () ఫంక్షన్ ఒక NULL పాయింటర్‌ను అందిస్తుంది. అందువల్ల, మాలోక్ () చేత తిరిగి ఇవ్వబడిన పాయింటర్ ఉన్న రిఫరెన్స్ వేరియబుల్, దానిని ఉపయోగించటానికి ముందు తనిఖీ చేయాలి, లేకుంటే అది సిస్టమ్ క్రాష్‌కు దారితీయవచ్చు.

Malloc () ఫంక్షన్ ద్వారా కేటాయించిన మెమరీ ఉచిత () ఉపయోగించి డీలోకేట్ చేయబడుతుంది. ఫంక్షన్ కాల్ ఓవర్ హెడ్‌కు దారితీస్తున్నందున, malloc () అమలు చేయడానికి ఎక్కువ సమయం అవసరం.

  1. క్రొత్త ఆపరేటర్ అనేది సి ++ లో ప్రవేశపెట్టిన నిర్మాణం మరియు జావా, సి #, మొదలైన వాటిలో ఉపయోగించబడుతుంది. మరోవైపు మాలోక్ () అనేది సి భాషలో మాత్రమే కనుగొనబడిన ప్రామాణిక లైబ్రరీ ఫంక్షన్ మరియు సి ++ చేత మద్దతు ఇవ్వబడుతుంది.
  2. క్రొత్త ఆపరేటర్ పేర్కొన్న రకం యొక్క వస్తువు కోసం తగినంత మెమరీని కేటాయిస్తుంది, కాబట్టి దీనికి సైజింగ్ ఆపరేటర్ అవసరం లేదు. మరోవైపు, malloc () ఫంక్షన్‌కు సైజ్‌ఆఫ్ () ఆపరేటర్ అవసరం, అది ఏ మెమరీ పరిమాణాన్ని కేటాయించాలో ఫంక్షన్‌కు తెలియజేయండి.
  3. కొత్త ఆపరేటర్ డిక్లరేషన్ చేసేటప్పుడు వస్తువు యొక్క కన్స్ట్రక్టర్‌కు కాల్ చేయవచ్చు. మరోవైపు, malloc () ఫంక్షన్ కన్స్ట్రక్టర్‌ను పిలవదు.
  4. ఆపరేటర్ ‘క్రొత్తది’ ఓవర్‌లోడ్ కావచ్చు కానీ malloc () కుదరలేదు.
  5. క్రొత్త ఆపరేటర్ మెమరీని కేటాయించడంలో విఫలమైతే, అది మినహాయింపును విసురుతుంది, అది కోడ్ ద్వారా నిర్వహించబడాలి, లేకపోతే ప్రోగ్రామ్ ముగుస్తుంది. మరోవైపు, మెలోక్ () ఫంక్షన్ మెమరీని కేటాయించడంలో విఫలమైతే NULL పాయింటర్‌ను అందిస్తుంది. దీన్ని తనిఖీ చేయకుండా పాయింటర్ ఉపయోగించినట్లయితే, అది సిస్టమ్ క్రాష్‌కు దారితీస్తుంది.
  6. క్రొత్త ఆపరేటర్‌ను ఉపయోగించి కేటాయించిన మెమరీని ‘తొలగించు’ ఉపయోగించి డీలోకేట్ చేయవచ్చు. మరోవైపు, మాలోక్ () ఫంక్షన్‌ను ఉపయోగించి కేటాయించిన మెమరీని ఉచిత () ఉపయోగించి డీలోకేట్ చేయవచ్చు.
  7. క్రొత్త ఆపరేటర్‌ను ఉపయోగించి మెమరీని కేటాయించిన తర్వాత, దాన్ని ఏమైనప్పటికీ పరిమాణం మార్చలేరు. మరోవైపు, మాలోక్ () ఫంక్షన్‌ను ఉపయోగించి కేటాయించిన మెమరీని రీలోక్ () ఫంక్షన్‌ను ఉపయోగించి తిరిగి కేటాయించవచ్చు (పరిమాణం మార్చవచ్చు).
  8. మాలోక్ () తో పోలిస్తే క్రొత్త అమలు సమయం తక్కువగా ఉంటుంది ఎందుకంటే మాలోక్ ఒక ఫంక్షన్ మరియు క్రొత్తది ఒక నిర్మాణం.

ముగింపు:

మాలోక్ () ఫంక్షన్ మెమరీని డైనమిక్‌గా కేటాయించే పాత మార్గం. ఈ రోజుల్లో, రన్టైమ్‌లో మెమరీని కేటాయించడానికి కొత్త ఆపరేటర్ ఉపయోగించబడుతుంది ఎందుకంటే దీనికి malloc () కంటే కొన్ని ప్రయోజనాలు ఉన్నాయి.