Różnica między Calloc i Malloc

Kluczowa różnica - calloc vs malloc

Podczas programowania konieczne jest przechowywanie danych. Dane są przechowywane w pamięci. Te lokalizacje pamięci są znane jako zmienne. Każda zmienna ma określony typ. Mogą to być liczby całkowite, liczby zmiennoprzecinkowe, liczby podwójne, znaki itp. Istnieją również struktury danych, które mogą przechowywać sekwencyjny zbiór elementów tego samego typu o stałej wielkości. To jest tablica. Programista musi zadeklarować rozmiar tablicy. Jeśli programista deklaruje tablicę liczb całkowitych dla pięciu elementów, nie jest możliwe przypisanie wartości do indeksu większego niż zadeklarowany rozmiar. Alokacja pamięci jest stała i nie można jej zmienić w czasie wykonywania. Inną metodą alokacji pamięci jest dynamiczna alokacja pamięci. Dynamiczny przydział pamięci pomaga przydzielić więcej pamięci w razie potrzeby i zwolnić w razie potrzeby. Plik nagłówkowy ma cztery funkcje do dynamicznego przydzielania pamięci. Calloc i Malloc to dwie takie funkcje. The kluczowa różnica między calloc i malloc jest to calloc przydziela pamięć, a także inicjuje przydzielone bloki pamięci na zero, podczas gdy malloc przydziela pamięć, ale nie inicjuje przydzielonej pamięci na zero. Dostęp do zawartości w calloc da zero, ale malloc da wartość śmieci.

ZAWARTOŚĆ

1. Przegląd i kluczowa różnica
2. Co to jest calloc
3. Co to jest malloc
4. Podobieństwa między calloc i malloc
5. Porównanie obok siebie - calloc vs malloc w formie tabelarycznej
6. Podsumowanie

Co to jest Calloc?

Przydział pamięci to proces przydzielania pamięci dla wykonujących programów. Czasami konieczna jest zmiana wielkości pamięci. Dlatego stosowana jest dynamiczna alokacja pamięci. Odbywa się to za pomocą wskaźników. Wskaźniki są zmiennymi odniesienia, które przechowują adres innej zmiennej.

Ryc. 01: Calloc i Malloc

calloc oznacza „ciągły przydział”. Przydziela wiele bloków pamięci o tym samym rozmiarze. Składnia calloc jest następująca. Wymaga dwóch argumentów. Są liczbą bloków i rozmiarem każdego bloku. Funkcja calloc zwraca pusty wskaźnik, więc operator rzutowania jest używany do zwracania typu wskaźnika zgodnie z wymaganym typem danych.

        void * calloc (size_t num, size_t size);

Zobacz poniższy prosty program C..

#zawierać

#zawierać

int main ()

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

if (ptr == NULL)

printf („Pamięć nie jest przydzielona”);

jeszcze

printf („Pamięć jest przydzielona”);

zwraca 0;

Zgodnie z powyższym programem przydzielony jest ciągły blok pamięci, który może pomieścić 20 elementów. Każdy będzie miał liczbę całkowitą. Sizeof (int) jest używany, ponieważ typ liczb całkowitych różni się w zależności od kompilatora.

Jeśli przydział pamięci zakończy się powodzeniem, zwróci adres bazowy bloku pamięci. Oznacza to, że wskaźnik ptr wskazuje teraz na adres bazowy tego bloku pamięci. Wszystkie przydzielone regiony są inicjowane na zera. Spowoduje to wydrukowanie komunikatu przydzielonego do pamięci. Jeśli przydział pamięci nie powiedzie się, zwróci wskaźnik zerowy. Dlatego wydrukuje komunikat Pamięć nie została przydzielona.

Co to jest Malloc?

Funkcja malloc służy do przydzielania wymaganej ilości bajtów w pamięci. Składnia malloc jest następująca. Rozmiar reprezentuje wymaganą pamięć w bajtach.

        void * malloc (size_t_size);

Funkcja malloc zwraca wskaźnik pustki, więc operator rzutowania jest używany do zwracania typu wskaźnika zgodnie z wymaganym typem danych.

Zobacz poniższy prosty program C z funkcją malloc.

#zawierać

#zawierać

int main ()

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

if (ptr == NULL)

printf („Pamięć nie jest przydzielona”);

jeszcze

printf („Pamięć jest przydzielona”);

zwraca 0;

Zgodnie z powyższym programem zostanie przydzielony blok pamięci. Wskaźnik wskazuje na początkowy adres przydzielonej pamięci. Zwrócony wskaźnik jest konwertowany na typ całkowity. Jeśli pamięć jest przydzielona, ​​wydrukuje komunikat o przydzielonej pamięci. Jeśli pamięć nie zostanie przydzielona, ​​zwróci wskaźnik zerowy. Dlatego pamięć nie została przydzielona, ​​wydrukuje się komunikat.

Jakie są podobieństwa między calloc i malloc?

  • Obie te funkcje są zadeklarowane w pliku nagłówkowym. Jest to standardowy plik nagłówka biblioteki.
  • Obie funkcje służą do dynamicznego przydzielania pamięci.
  • Wskaźnik zwracany przez calloc i malloc powinien być rzutowany na określony typ.
  • Po pomyślnym przydzieleniu pamięci obie funkcje zwrócą wskaźnik z bazowym adresem bloku pamięci.
  • Jeśli przydział pamięci nie powiedzie się, zostanie zwrócony wskaźnik zerowy.

Jaka jest różnica między calloc a malloc?

calloc vs malloc

calloc to funkcja do dynamicznego przydzielania pamięci w pliku nagłówkowym stdlib.h w języku C, który przydziela określoną liczbę bajtów i inicjuje je do zera. malloc to funkcja do dynamicznego przydzielania pamięci w pliku nagłówkowym stdlib.h w języku C, który przydziela określoną liczbę bajtów.
 Znaczenie
calloc oznacza ciągły przydział. malloc oznacza przydział pamięci.
Składnia
calloc ma składnię podobną do void * calloc (size_t_num, size_t size); malloc stosuje składnię podobną do void * malloc (size_t_size);.
 Liczba argumentów
calloc przyjmuje dwa argumenty. Są to liczba bloków i rozmiar każdego bloku. Malloc bierze jeden argument. Jest to liczba bajtów.
Prędkość
calloc trwa niewiele dłużej niż malloc. Wynika to z dodatkowego kroku inicjowania przydzielonej pamięci o zero. malloc jest szybszy niż calloc.

Podsumowanie - calloc vs malloc

W przypadku statycznego przydziału pamięci, np. Przy użyciu tablic, pamięć jest stała. Jeśli przechowywanych jest kilka elementów, reszta pamięci jest marnowana. Może to również powodować błędy, gdy przydzielona pamięć jest mała niż wymagana pamięć. Dlatego stosowana jest dynamiczna alokacja pamięci. W języku C calloc i malloc zapewniają dynamiczny przydział pamięci. Różnica między calloc i malloc polega na tym, że calloc przydziela pamięć, a także inicjuje przydzielone bloki pamięci do zera, podczas gdy malloc przydziela pamięć, ale nie inicjuje bloków pamięci do zera. Malloc przyjmuje dwa argumenty, a calloc dwa argumenty.

Pobierz plik PDF Calloc vs Malloc

Możesz pobrać wersję PDF tego artykułu i używać go do celów offline zgodnie z cytatem. Pobierz wersję PDF tutaj: Różnica między calloc a malloc

Odniesienie:

1.Kumar, Krishan. „Różnica między Malloc a Calloc w C.” Cs-Fundamentals.com, Cs-Fundamentals.com. Dostępny tutaj  
2. „Dynamiczny przydział pamięci C”. Wikipedia, Wikimedia Foundation, 13 stycznia 2018 r. Dostępne tutaj 
3. „Calloc () kontra malloc ().” GeeksforGeeks, 14 czerwca 2017 r. Dostępne tutaj