በካሎክ እና ማሎክ መካከል ያለው ልዩነት

ዝርዝር ሁኔታ:

በካሎክ እና ማሎክ መካከል ያለው ልዩነት
በካሎክ እና ማሎክ መካከል ያለው ልዩነት

ቪዲዮ: በካሎክ እና ማሎክ መካከል ያለው ልዩነት

ቪዲዮ: በካሎክ እና ማሎክ መካከል ያለው ልዩነት
ቪዲዮ: Меркурий в Ретрограде! aleksey_mercedes 2024, ሀምሌ
Anonim

ቁልፍ ልዩነት - calloc vs malloc

በፕሮግራም አወጣጥ ላይ ውሂብ ማከማቸት አስፈላጊ ነው። ውሂብ በማህደረ ትውስታ ውስጥ ተከማችቷል. እነዚህ የማስታወሻ ቦታዎች ተለዋዋጭ በመባል ይታወቃሉ. እያንዳንዱ ተለዋዋጭ የተወሰነ ዓይነት አለው. ኢንቲጀር፣ ተንሳፋፊ፣ ድርብ፣ ገጸ-ባህሪያት ወዘተ ሊሆኑ ይችላሉ።እንዲሁም ቋሚ መጠን ያላቸውን ተመሳሳይ የንጥረ ነገሮች ስብስብ ሊያከማቹ የሚችሉ የመረጃ አወቃቀሮች አሉ። ድርድር ነው። ፕሮግራም አውጪው የድርድር መጠኑን ማሳወቅ አለበት። ፕሮግራመር ለአምስት አካላት የኢንቲጀር ድርድር ካወጀ፣ ከተገለጸው መጠን በላይ ላለው ኢንዴክስ ዋጋ መስጠት አይቻልም። የማህደረ ትውስታ ድልድል ቋሚ ነው፣ እና በሂደት ጊዜ ሊቀየር አይችልም።ሌላው የማህደረ ትውስታ ድልድል ዘዴ ተለዋዋጭ ማህደረ ትውስታ ምደባ ነው። ተለዋዋጭ ማህደረ ትውስታ ድልድል በሚፈለግበት ጊዜ ተጨማሪ ማህደረ ትውስታን ለመመደብ እና አስፈላጊ ሆኖ ሲገኝ ለመልቀቅ ይረዳል. የራስጌ ፋይል ለተለዋዋጭ ማህደረ ትውስታ ምደባ አራት ተግባራት አሉት። ካሎክ እና ማሎክ እንደነዚህ ያሉ ሁለት ተግባራት ናቸው. በካሎክ እና በማሎክ መካከል ያለው ቁልፍ ልዩነት ካሎክ ማህደረ ትውስታን ይመድባል እና የተመደቡትን የማህደረ ትውስታ ብሎኮች ወደ ዜሮ ማስጀመር ሲሆን ማሎክ ግን ማህደረ ትውስታን ይመድባል ነገር ግን የተመደበውን ማህደረ ትውስታ ወደ ዜሮ አያስጀምርም። ይዘቱን በካሎክ መድረስ ዜሮ ይሰጣል፣ ነገር ግን malloc የቆሻሻ ዋጋን ይሰጣል።

ካሎክ ምንድነው?

የማህደረ ትውስታ ድልድል ለትግበራ ፕሮግራሞች የማህደረ ትውስታን የመመደብ ሂደት ነው። አንዳንድ ጊዜ የማስታወሻውን መጠን መቀየር አስፈላጊ ነው. ስለዚህ, ተለዋዋጭ ማህደረ ትውስታ ምደባ ጥቅም ላይ ይውላል. ጠቋሚዎችን በመጠቀም ይከናወናል. ጠቋሚዎች የሌላ ተለዋዋጭ አድራሻን የሚይዙ የማጣቀሻ ተለዋዋጮች ናቸው።

በካሎክ እና በማሎክ መካከል ያለው ልዩነት
በካሎክ እና በማሎክ መካከል ያለው ልዩነት

ስእል 01፡ calloc እና malloc

caloc ማለት "ቀጣይ ምደባ" ማለት ነው። ተመሳሳይ መጠን ያላቸውን በርካታ የማህደረ ትውስታ ብሎኮች ይመድባል። የካሎክ አገባብ እንደሚከተለው ነው። ሁለት ክርክሮችን ይወስዳል. እነሱ የብሎኮች ብዛት እና የእያንዳንዱ እገዳ መጠን ናቸው። የካሎክ ተግባር ባዶ ጠቋሚን ይመልሳል፣ስለዚህ ውሰድ ኦፕሬተር የጠቋሚውን አይነት በሚፈለገው የውሂብ አይነት ለመመለስ ይጠቅማል።

ባዶካሎክ(መጠን_ቁጥር፣መጠን_ቲ መጠን)፤

ከታች ያለውን ቀላል የC ፕሮግራም ይመልከቱ።

ያካትቱ

ያካትቱ

int ዋና(){

int ptr=(int) calloc(20, sizeof(int));

ከሆነ (ptr==NULL){

printf("ማህደረ ትውስታ አልተመደበም");

}

ሌላ{

printf("ማህደረ ትውስታ ተመድቧል");

}

መመለስ 0፤

}

ከላይ ባለው ፕሮግራም መሰረት 20 ኤለመንቶችን ሊይዝ የሚችል ተከታታይ የማህደረ ትውስታ ክፍል ተመድቧል። እያንዳንዳቸው የኢንቲጀር መጠን ይኖራቸዋል። የ(int) መጠን ጥቅም ላይ የሚውለው የኢንቲጀር አይነት ከአቀናባሪ ወደ አቀናባሪ ስለሚለያይ ነው።

የማህደረ ትውስታ ድልድል ከተሳካ የማህደረ ትውስታ እገዳውን አድራሻ ይመልሳል። ይህ ማለት ጠቋሚ ptr አሁን ወደዚያ ማህደረ ትውስታ እገዳው አድራሻ እየጠቆመ ነው። ሁሉም የተመደቡ ክልሎች ወደ ዜሮዎች ተጀምረዋል. ሚሞሪ የተመደበውን መልእክት ያትማል። የማህደረ ትውስታ ምደባ ካልተሳካ፣ ባዶ ጠቋሚውን ይመልሳል። ስለዚህ፣ ሜሞሪ ያልተመደበ መልእክት ያትማል።

ማሎክ ምንድነው?

የማሎክ ተግባር የሚፈለገውን የባይት መጠን በማህደረ ትውስታ ለመመደብ ይጠቅማል። የማልሎክ አገባብ እንደሚከተለው ነው። መጠኑ የሚፈለገውን ማህደረ ትውስታ በባይት ይወክላል።

ባዶ ማሎክ(መጠን_t_መጠን)፤

የማሎክ ተግባር ባዶ ጠቋሚን ይመልሳል፣ስለዚህ ውሰድ ኦፕሬተር የጠቋሚ አይነት በሚፈለገው የውሂብ አይነት ለመመለስ ይጠቅማል።

ከታች ያለውን ቀላል C ፕሮግራም ከማልሎክ ተግባር ጋር ይመልከቱ።

ያካትቱ

ያካትቱ

int ዋና(){

int ptr=(int) malloc (10sizeof(int));

ከሆነ (ptr==NULL){

printf("ማህደረ ትውስታ አልተመደበም");

}

ሌላ{

printf("ማህደረ ትውስታ ተመድቧል");

}

መመለስ 0፤

}

ከላይ ባለው ፕሮግራም መሰረት የማህደረ ትውስታ ማገጃ ይመደባል። ጠቋሚው የተመደበውን ማህደረ ትውስታ መነሻ አድራሻ እየጠቆመ ነው። የተመለሰው ጠቋሚ ወደ ኢንቲጀር አይነት ይቀየራል። ማህደረ ትውስታ ከተመደበ ሜሞሪ ይመደባል መልእክት ያትማል። ማህደረ ትውስታው ካልተመደበ ባዶ ጠቋሚ ይመለሳል። ስለዚህ፣ ማህደረ ትውስታ አልተመደበም መልእክት ያትማል።

በካሎክ እና ማሎክ መካከል ያለው ተመሳሳይነት ምንድን ነው?

  • ሁለቱም ተግባራት በአርእስት ፋይል ውስጥ ታውቀዋል። መደበኛው የቤተ-መጽሐፍት ራስጌ ፋይል ነው።
  • ሁለቱም ተግባራት ለተለዋዋጭ ማህደረ ትውስታ ምደባ ጥቅም ላይ ይውላሉ።
  • በካሎክ እና ማሎክ የተመለሰው ጠቋሚ ወደ ተለየ አይነት መጣል አለበት።
  • በተሳካ የማህደረ ትውስታ ድልድል ሁለቱም ተግባራት የማህደረ ትውስታ ብሎክ መነሻ አድራሻ ያለው ጠቋሚ ይመለሳሉ።
  • የማህደረ ትውስታ ድልድል ካልተሳካ ባዶ ጠቋሚ ይመለሳል።

በካሎክ እና ማሎክ መካከል ያለው ልዩነት ምንድን ነው?

caloc vs malloc

calloc ለተለዋዋጭ የማስታወሻ ድልድል ተግባር በC ቋንቋ stdlib.h ራስጌ ፋይል የተወሰነ ባይት ቁጥር መድቦ ወደ ዜሮ ያስጀምራቸዋል። malloc ለተለዋዋጭ ማህደረ ትውስታ በC ቋንቋ stdlib.h ራስጌ ፋይል የተወሰነ የባይት ብዛት የሚመድብ ተግባር ነው።
ትርጉም
caloc ማለት ተከታታይ ድልድል ማለት ነው። malloc የማህደረ ትውስታ ምደባን ያመለክታል።
አገባብ
ካሎክ ባዶ ካሎክ(መጠን_ቲ_ቁጥር፣መጠኑ_ት)፤ ጋር ተመሳሳይ የሆነ አገባብ ይከተላል። malloc ከ ባዶ malloc(መጠን_ት_መጠን) ጋር ተመሳሳይ የሆነ አገባብ ይከተላል።
የክርክር ብዛት
caloc ሁለት ነጋሪ እሴቶችን ይወስዳል። የእያንዳንዱ ብሎኮች ብዛት እና መጠን ናቸው። malloc አንድ ነጋሪ እሴት ይወስዳል። እሱ በርካታ ባይት ነው።
ፍጥነት
caloc ከማሎክ ትንሽ ጊዜ ይወስዳል። የተመደበውን ማህደረ ትውስታ በዜሮ የማስጀመር ተጨማሪ እርምጃ ምክንያት ነው። ማሎክ ከካሎክ የበለጠ ፈጣን ነው።

ማጠቃለያ - calloc vs malloc

በማይንቀሳቀስ ማህደረ ትውስታ ድልድል ውስጥ እንደ እኛ ድርድርን በመጠቀም ማህደረ ትውስታው ተስተካክሏል። ጥቂት ንጥረ ነገሮች ከተከማቹ, የተቀረው ማህደረ ትውስታ ይባክናል. የተመደበው ማህደረ ትውስታ ከሚፈለገው ማህደረ ትውስታ ትንሽ ከሆነ ስህተቶችን ሊያስከትል ይችላል። ስለዚህ, ተለዋዋጭ ማህደረ ትውስታ ምደባ ጥቅም ላይ ይውላል. በ C ቋንቋ, calloc እና malloc ተለዋዋጭ ማህደረ ትውስታ ምደባ ይሰጣሉ. በካሎክ እና በማሎክ መካከል ያለው ልዩነት ካሎክ ማህደረ ትውስታን ይመድባል እና እንዲሁም የተመደቡትን የማህደረ ትውስታ ብሎኮች ወደ ዜሮ ማስጀመር እና ማሎክ ማህደረ ትውስታን ሲመድብ ግን የማስታወሻ ማገጃዎችን ወደ ዜሮ አለመጀመሩ ነው ። ካልሎክ ሁለት ነጋሪ እሴቶችን ሲወስድ ማሎክ ሁለት ነጋሪ እሴቶችን ይወስዳል።

የ calloc vs malloc PDF አውርድ

የዚህን ጽሁፍ ፒዲኤፍ ስሪት አውርደው በጥቅስ ማስታወሻ መሰረት ከመስመር ውጭ አላማዎች መጠቀም ይችላሉ። እባክዎ የፒዲኤፍ ሥሪቱን እዚህ ያውርዱ፡ በ calloc እና malloc መካከል ያለው ልዩነት

የሚመከር: