Diferența dintre calloc și malloc

Diferența cheie - calloc vs malloc

În programare, este necesar să stocați date. Datele sunt stocate în memorie. Aceste locații de memorie sunt cunoscute ca variabile. Fiecare variabilă are un tip specific. Acestea pot fi numere întregi, flotoare, 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 serie de numere întregi pentru cinci elemente, nu este posibil să atribuiți o valoare unui index mai mare decât dimensiunea declarată. Alocarea memoriei este fixă ​​și nu poate fi schimbată la timpul de execuție. Metoda de alocare a memoriei este alocarea dinamică a memoriei. Alocarea dinamică a memoriei vă ajută să alocați mai multă memorie când este necesar și eliberați-o 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 între calloc și malloc este asta calloc alocă memoria și inițializează blocurile de memorie alocate la zero, în timp ce malloc alocă memoria, dar nu inițiază acea memorie alocată la zero. Accesarea conținutului în calloc va da zero, dar malloc va da o valoare de gunoi.

CUPRINS

1. Prezentare generală și diferență cheie
2. Ce este calloc
3. Ce este malloc
4. Asemănări între calloc și malloc
5. Comparație de la o parte la alta - calloc vs malloc în formă tabulară
6. rezumat

Ce este calloc?

Alocarea memoriei este procesul de atribuire a memoriei pentru programele de execuție. Uneori este necesar să modificați dimensiunea memoriei. Prin urmare, se utilizează alocarea dinamică a memoriei. Se face folosind indicii. Indicatorii sunt variabilele de referință care dețin adresa unei alte variabile.

Figura 01: calloc și malloc

calloc înseamnă "alocare contiguă". El alocă mai multe blocuri de memorie cu aceeași dimensiune. Sintaxa pentru calloc este după cum urmează. Este nevoie de două argumente. Acestea sunt numărul de blocuri și mărimea fiecărui bloc. Funcția calloc returnează un pointer vid, astfel încât un operator de distribuție este utilizat pentru a întoarce tipul de indicator în funcție de tipul de date cerut.

        void * calloc (size_t num, size_t size);

Consultați programul simplu C 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ă");

retur 0;

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

Dacă alocarea memoriei este reușită, va reveni la adresa de bază a blocului de memorie. Înseamnă că pointerul ptr indică acum adresa de bază a acelui bloc de memorie. Toate regiunile alocate sunt inițializate la zero. Acesta va imprima mesajul Memorat alocat. Dacă alocarea memoriei este nereușită, aceasta va returna indicatorul nul. Prin urmare, se va imprima mesajul Memorie nu este alocat.

Ce este malloc?

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

        void * malloc (dimensiune_t_size);

Funcția malloc returnează un pointer vid, astfel încât un operator de distribuție este folosit pentru a întoarce tipul de indicatorul în funcție de tipul de date cerut.

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

#include

#include

int main ()

int ptr * = (int *) malloc (10 * dimensionof (int));

dacă (ptr == NULL)

printf ("Memoria nu este alocată");

else

printf ("Memoria este alocată");

retur 0;

Conform programului de mai sus, va fi alocat un bloc de memorie. Indicatorul indică adresa de pornire a memoriei alocate. Indicatorul returnat este convertit la un tip întreg. Dacă este alocată memoria, va fi imprimată mesajul de memorie. Dacă memoria nu este alocată, se va afișa un indicator nevalid. Prin urmare, memoria nu este alocată mesajului se va imprima.

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

  • Ambele funcții sunt declarate în fișierul antet. Acesta este fișierul standard al antetului bibliotecii.
  • Ambele funcții sunt utilizate pentru alocarea dinamică a memoriei.
  • Pointerul returnat de calloc și malloc trebuie să fie încadrat în tipul specific.
  • În alocarea reușită a memoriei, ambele funcții vor readuce un pointer cu adresa de bază a blocului de memorie.
  • Dacă alocarea memoriei este nereușită, 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 header-ului stdlib.h al limbajului C care alocă un anumit număr de octeți și le inițiază la zero. malloc este o funcție pentru alocarea dinamică a memoriei în fișierul header-ului stdlib.h al limbajului C care alocă un anumit număr de octeți.
 Sens
calloc înseamnă alocare contiguă. malloc înseamnă alocarea memoriei.
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ăr de argumente
calloc ia două argumente. Ele reprezintă un număr de blocuri și mărimea fiecărui bloc. malloc ia un argument. Este un număr de octeți.
Viteză
calloc durează mai puțin decât malloc. Aceasta 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 fixată. Dacă sunt stocate puține elemente, atunci restul memoriei este irosit. De asemenea, ar putea provoca erori atunci când memoria alocată este mică decât memoria necesară. Prin urmare, se utilizează alocarea dinamică a memoriei. În limba C, calloc și malloc oferă alocarea dinamică a memoriei. Diferența dintre calloc și malloc este aceea că calloc alocă memoria și 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 de calloc vs malloc

Puteți descărca versiunea PDF a acestui articol și îl puteți utiliza în scopuri offline conform notei de citare. Descărcați versiunea PDF aici: Diferența dintre calloc și malloc

Referinţă:

1.Kumar, Krishan. "Diferența dintre Malloc și Calloc în C." Cs-Fundamentals.com, Cs-Fundamentals.com. Disponibil aici  
2. "alocarea dinamică a memoriei C". Wikipedia, Fundația Wikimedia, 13 ianuarie 2018. Disponibil aici 
3. "Calloc () versus malloc ()" GeeksforGeeks, 14 iunie 2017. Disponibil aici