Diferența dintre calloc și malloc

Cuprins:

Diferența dintre calloc și malloc
Diferența dintre calloc și malloc

Video: Diferența dintre calloc și malloc

Video: Diferența dintre calloc și malloc
Video: difference between calloc and malloc | calloc Vs malloc | calloc function and malloc function 2024, Iulie
Anonim

Diferența cheie – calloc vs malloc

În programare, este necesară stocarea datelor. Datele sunt stocate în memorie. Aceste locații de memorie sunt cunoscute ca variabile. Fiecare variabilă are un tip specific. Ele pot fi numere întregi, flotanți, duble, caractere etc. Există, de asemenea, structuri de date care pot stoca o colecție secvențială de dimensiuni fixe de elemente de același tip. Este o matrice. Programatorul trebuie să declare dimensiunea matricei. Dacă programatorul declară o matrice de numere întregi pentru cinci elemente, nu este posibilă atribuirea unei valori unui index mai mare decât dimensiunea declarată. Alocarea memoriei este fixă și nu poate fi modificată în timpul rulării. O altă metodă de alocare a memoriei este alocarea dinamică a memoriei. Alocarea dinamică a memoriei ajută la alocarea mai multă memorie atunci când este necesar și la eliberarea când este necesar. Fișierul antet are patru funcții pentru alocarea dinamică a memoriei. calloc și malloc sunt două astfel de funcții. Diferența cheie dintre calloc și malloc este că calloc alocă memoria și, de asemenea, inițializează blocurile de memorie alocate la zero, în timp ce malloc alocă memoria, dar nu inițializează memoria alocată la zero. Accesarea conținutului în calloc va da zero, dar malloc va da o valoare de gunoi.

Ce este calloc?

Alocarea memoriei este procesul de alocare a memoriei pentru programele în execuție. Uneori este necesar să se schimbe dimensiunea memoriei. Prin urmare, se utilizează alocarea dinamică a memoriei. Se face folosind pointeri. Pointerii sunt variabile de referință care dețin adresa altei variabile.

Diferența dintre calloc și malloc
Diferența dintre calloc și malloc

Figura 01: calloc și malloc

calloc înseamnă „alocare contiguă”. Alocă mai multe blocuri de memorie cu aceeași dimensiune. Sintaxa pentru calloc este următoarea. Este nevoie de două argumente. Acestea sunt numărul de blocuri și dimensiunea fiecărui bloc. Funcția calloc returnează un pointer void, astfel încât un operator de turnare este folosit pentru a returna tipul de indicator în funcție de tipul de date necesar.

voidcalloc(size_t num, size_t size);

Consultați programul C simplu de mai jos.

include

include

int main(){

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

dacă (ptr==NULL){

printf(„Memoria nu este alocată”);

}

else{

printf(„Memoria este alocată”);

}

return 0;

}

Conform programului de mai sus, este alocat un bloc contiguu de memorie care poate conține 20 de elemente. Fiecare va avea dimensiunea unui număr întreg. Sizeof(int) este folosită deoarece tipul întreg variază de la compilator la compilator.

Dacă alocarea memoriei are succes, aceasta va returna adresa de bază a blocului de memorie. Înseamnă că pointerul ptr indică acum adresa de bază a blocului de memorie respectiv. Toate regiunile alocate sunt inițializate la zerouri. Acesta va imprima mesajul Memory Allocated. Dacă alocarea memoriei nu are succes, va returna pointerul nul. Prin urmare, va imprima mesajul Memory is not alocated.

Ce este malloc?

Funcția malloc este utilizată pentru a aloca cantitatea necesară de octeți în memorie. Sintaxa pentru malloc este următoarea. Dimensiunea reprezintă memoria necesară în octeți.

void malloc(size_t_size);

Funcția malloc returnează un pointer void, deci un operator de turnare este folosit pentru a returna tipul de pointer în funcție de tipul de date necesar.

Consultați programul C simplu de mai jos cu funcție malloc.

include

include

int main(){

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

dacă (ptr==NULL){

printf(„Memoria nu este alocată”);

}

else{

printf(„Memoria este alocată”);

}

return 0;

}

Conform programului de mai sus, blocul de memorie va fi alocat. Pointerul indică adresa de pornire a memoriei alocate. Pointerul returnat este convertit într-un tip întreg. Dacă memoria este alocată, va imprima mesajul despre memoria este alocată. Dacă memoria nu este alocată, va reveni un pointer nul. Prin urmare, memoria nu este alocată mesajul va fi tipărit.

Care sunt asemănările dintre calloc și malloc?

  • Ambele aceste funcții sunt declarate în fișierul antet. Este fișierul standard de antet al bibliotecii.
  • Ambele funcții sunt folosite pentru alocarea dinamică a memoriei.
  • Indicatorul returnat de calloc și malloc ar trebui să fie turnat în tipul specific.
  • În cazul unei alocări de memorie cu succes, ambele funcții vor returna un indicator cu adresa de bază a blocului de memorie.
  • Dacă alocarea memoriei nu reușește, va fi returnat un pointer nul.

Care este diferența dintre calloc și malloc?

calloc vs malloc

calloc este o funcție pentru alocarea dinamică a memoriei în fișierul antet stdlib.h în limbaj C care alocă un anumit număr de octeți și îi inițializează la zero. malloc este o funcție pentru alocarea dinamică a memoriei în fișierul antet stdlib.h în limbaj C care alocă un anumit număr de octeți.
Sens
calloc înseamnă alocare contiguă. malloc înseamnă alocare de memorie.
Sintaxă
calloc urmează o sintaxă similară cu void calloc(size_t_num, size_t size); malloc urmează o sintaxă similară cu void malloc(size_t_size);.
Numărul de argumente
calloc acceptă două argumente. Sunt un număr de blocuri și dimensiunea fiecărui bloc. malloc are un singur argument. Este un număr de octeți.
Viteza
calloc durează puțin mai mult decât malloc. Acest lucru se datorează pasului suplimentar de inițializare a memoriei alocate cu zero. malloc este mai rapid decât calloc.

Rezumat – calloc vs malloc

În alocarea de memorie statică, cum ar fi folosirea matricelor, memoria este fixă. Dacă sunt stocate puține elemente, atunci restul memoriei este irosit. De asemenea, poate provoca erori atunci când memoria alocată este mai mică decât memoria necesară. Prin urmare, se utilizează alocarea dinamică a memoriei. În limbajul C, calloc și malloc oferă o alocare dinamică a memoriei. Diferența dintre calloc și malloc este că calloc alocă memorie și, de asemenea, inițializează blocurile de memorie alocate la zero, în timp ce malloc alocă memoria, dar nu inițializează blocurile de memorie la zero. Malloc ia două argumente, în timp ce calloc ia două argumente.

Descărcați PDF-ul calloc vs malloc

Puteți descărca versiunea PDF a acestui articol și să o utilizați în scopuri offline, conform nota de citare. Vă rugăm să descărcați versiunea PDF aici: Diferența dintre calloc și malloc

Recomandat: