Verskil tussen calloc en malloc

INHOUDSOPGAWE:

Verskil tussen calloc en malloc
Verskil tussen calloc en malloc

Video: Verskil tussen calloc en malloc

Video: Verskil tussen calloc en malloc
Video: Dynamic memory allocation in C - malloc calloc realloc free 2024, November
Anonim

Sleutelverskil – calloc vs malloc

In programmering is dit nodig om data te stoor. Data word in die geheue gestoor. Hierdie geheue liggings staan bekend as veranderlikes. Elke veranderlike het 'n spesifieke tipe. Hulle kan heelgetalle, dryf, dubbele, karakters ens wees. Daar is ook datastrukture wat 'n vaste-grootte opeenvolgende versameling elemente van dieselfde tipe kan stoor. Dit is 'n skikking. Die programmeerder moet die skikkinggrootte verklaar. As die programmeerder 'n verskeidenheid heelgetalle vir vyf elemente verklaar, is dit nie moontlik om 'n waarde aan 'n indeks hoër as die verklaarde grootte toe te ken nie. Die geheue toekenning is vas, en dit kan nie verander word tydens hardloop tyd. Ander geheue toekenning metode is dinamiese geheue toekenning. Dinamiese geheuetoewysing help om meer geheue toe te ken wanneer nodig en vry te laat wanneer nodig. Die koplêer het vier funksies vir dinamiese geheuetoewysing. calloc en malloc is twee sulke funksies. Die sleutelverskil tussen calloc en malloc is dat calloc die geheue toewys en ook die toegekende geheueblokke inisialiseer na nul, terwyl malloc die geheue toewys, maar nie daardie toegekende geheue na nul inisialiseer nie. Toegang tot die inhoud in calloc sal nul gee, maar malloc sal 'n vulliswaarde gee.

Wat is calloc?

Geheuetoewysing is die proses van die toewys van geheue vir die uitvoering van programme. Soms is dit nodig om die grootte van geheue te verander. Daarom word dinamiese geheuetoewysing gebruik. Dit word gedoen met behulp van wysers. Wysers is verwysingsveranderlikes wat die adres van 'n ander veranderlike bevat.

Verskil tussen calloc en malloc
Verskil tussen calloc en malloc

Figuur 01: calloc en malloc

calloc staan vir “aaneenlopende toekenning”. Dit ken verskeie blokke geheue toe met dieselfde grootte. Die sintaksis vir calloc is soos volg. Dit verg twee argumente. Dit is die aantal blokke en die grootte van elke blok. Die funksie calloc gee 'n leemtewyser terug, dus word 'n rolspeler-operateur gebruik om wysertipe terug te stuur volgens die vereiste datatipe.

voidcalloc(size_t num, size_t size);

Verwys die onderstaande eenvoudige C-program.

insluit

insluit

int main(){

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

if (ptr==NULL){

printf(“Geheue is nie toegeken nie”);

}

else{

printf(“Geheue is toegewys”);

}

return 0;

}

Volgens bogenoemde program word 'n aaneenlopende geheueblok wat 20 elemente kan bevat, toegeken. Elkeen sal die grootte van 'n heelgetal hê. Die sizeof(int) word gebruik omdat die heelget altipe van samesteller tot samesteller verskil.

As die geheuetoewysing suksesvol is, sal dit die basisadres van die geheueblok terugstuur. Dit beteken dat wyser ptr nou na die basisadres van daardie geheueblok wys. Alle toegekende streke word geïnisialiseer na nulle. Dit sal die Memory Allocated-boodskap druk. As die geheuetoewysing onsuksesvol is, sal dit die nulwyser terugstuur. Daarom sal dit druk Geheue is nie toegeken nie boodskap.

Wat is malloc?

Die malloc-funksie word gebruik om die vereiste hoeveelheid grepe in die geheue toe te wys. Die sintaksis vir malloc is soos volg. Die grootte verteenwoordig die vereiste geheue in grepe.

void malloc(size_t_size);

Die funksie malloc gee 'n leemtewyser terug, dus word 'n cast-operateur gebruik om wysertipe terug te stuur volgens die vereiste datatipe.

Verwys die onderstaande eenvoudige C-program met malloc-funksie.

include

include

int main(){

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

if (ptr==NULL){

printf(“Geheue is nie toegeken nie”);

}

else{

printf(“Geheue is toegewys”);

}

return 0;

}

Volgens bogenoemde program, sal blok geheue toegeken word. Die wyser wys na die beginadres van die toegekende geheue. Die teruggewende wyser word omgeskakel na 'n heelget altipe. As geheue toegewys is, sal dit druk geheue is toegeken boodskap. As die geheue nie toegewys is nie, sal 'n nulwyser terugkeer. Geheue is dus nie toegeken nie boodskap sal druk.

Wat is die ooreenkomste tussen calloc en malloc?

  • Albei hierdie funksies word in die koplêer verklaar. Dit is die standaard biblioteekopskriflêer.
  • Albei funksies word vir dinamiese geheuetoewysing gebruik.
  • Die wyser wat deur calloc en malloc teruggestuur word, moet in die spesifieke tipe ingegooi word.
  • In suksesvolle geheuetoewysing sal beide funksies 'n wyser met die basisadres van die geheueblok terugstuur.
  • As die geheuetoewysing onsuksesvol is, sal 'n nulwyser teruggestuur word.

Wat is die verskil tussen calloc en malloc?

calloc vs malloc

calloc is 'n funksie vir dinamiese geheue-toewysing in C-taal stdlib.h koplêer wat 'n spesifieke aantal grepe toewys en dit inisialiseer na nul. malloc is 'n funksie vir dinamiese geheuetoewysing in C-taal stdlib.h koplêer wat 'n spesifieke aantal grepe toeken.
Betekenis
calloc staan vir aaneenlopende toekenning. malloc staan vir geheuetoewysing.
Syntaksis
calloc volg 'n sintaksis soortgelyk aan void calloc(size_t_num, size_t size); malloc volg 'n sintaksis soortgelyk aan void malloc(size_t_size);.
Aantal argumente
calloc neem twee argumente. Hulle is 'n aantal blokke en die grootte van elke blok. malloc neem een argument. Dit is 'n aantal grepe.
Speed
calloc neem bietjie langer as malloc. Dit is as gevolg van die ekstra stap om die toegekende geheue met nul te inisialiseer. malloc is vinniger as calloc.

Opsomming – calloc vs malloc

In statiese geheue toewysing soos ons met behulp van skikkings, is die geheue vas. As min elemente gestoor word, word die res van die geheue vermors. Dit kan ook foute veroorsaak wanneer die toegewese geheue klein is as die vereiste geheue. Daarom word dinamiese geheuetoewysing gebruik. In C-taal bied calloc en malloc dinamiese geheuetoewysing. Die verskil tussen calloc en malloc is dat calloc geheue toewys en ook die toegekende geheueblokke inisialiseer na nul terwyl malloc die geheue toewys, maar nie geheueblokke na nul inisialiseer nie. Malloc neem twee argumente terwyl calloc twee argumente neem.

Laai die PDF van calloc vs malloc af

Jy kan die PDF-weergawe van hierdie artikel aflaai en dit vir vanlyn doeleindes gebruik soos per aanhalingsnota. Laai asseblief die PDF-weergawe hier af: Verskil tussen calloc en malloc

Aanbeveel: