Różnica między calloc a malloc

Spisu treści:

Różnica między calloc a malloc
Różnica między calloc a malloc

Wideo: Różnica między calloc a malloc

Wideo: Różnica między calloc a malloc
Wideo: Calloc vs malloc | GeeksforGeeks 2024, Listopad
Anonim

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, zmiennoprzecinkowe, podwójne, znaki itp. Istnieją również struktury danych, które mogą przechowywać sekwencyjną kolekcję elementów tego samego typu o stałym rozmiarze. To jest tablica. Programista musi zadeklarować rozmiar tablicy. Jeśli programista zadeklaruje tablicę liczb całkowitych dla pięciu elementów, nie jest możliwe przypisanie wartości do indeksu większego niż zadeklarowany rozmiar. Przydział pamięci jest stały i nie można go zmienić w czasie wykonywania. Inną metodą alokacji pamięci jest dynamiczna alokacja pamięci. Dynamiczna alokacja pamięci pomaga przydzielić więcej pamięci, gdy jest to wymagane, i zwolnić, gdy jest to konieczne. Plik nagłówkowy ma cztery funkcje dynamicznej alokacji pamięci. calloc i malloc to dwie takie funkcje. Kluczową różnicą między calloc i malloc jest to, że calloc alokuje pamięć, a także inicjuje przydzielone bloki pamięci do zera, podczas gdy malloc alokuje pamięć, ale nie inicjuje przydzielonej pamięci do zera. Dostęp do zawartości w calloc da zero, ale malloc da wartość śmieci.

Co to jest calloc?

Alokacja pamięci to proces przypisywania pamięci dla wykonywanych programów. Czasami konieczna jest zmiana wielkości pamięci. Dlatego używana jest dynamiczna alokacja pamięci. Odbywa się to za pomocą wskaźników. Wskaźniki są zmiennymi referencyjnymi, które przechowują adres innej zmiennej.

Różnica między calloc i malloc
Różnica między calloc i malloc

Rysunek 01: calloc i malloc

calloc oznacza „ciągłą alokację”. Przydziela wiele bloków pamięci o tym samym rozmiarze. Składnia calloc jest następująca. Wymaga dwóch argumentów. Są to liczba bloków i rozmiar 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.

voidcalloc(size_t num, size_t size);

Odnieś się do poniższego prostego programu w C.

dołącz

dołącz

int main(){

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

if (ptr==NULL){

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

}

else{

printf(„Pamięć jest przydzielona”);

}

powrót 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ł rozmiar liczby całkowitej. Używane jest sizeof(int), ponieważ typ liczby całkowitej różni się w zależności od kompilatora.

Jeżeli alokacja pamięci się powiedzie, 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 zerami. Wydrukuje komunikat Przydzielona pamięć. Jeśli alokacja pamięci nie powiedzie się, zwróci wskaźnik pusty. Dlatego wydrukuje komunikat Pamięć nie jest 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 pusty wskaźnik, więc operator rzutowania jest używany do zwracania typu wskaźnika zgodnie z wymaganym typem danych.

Odnieś się do poniższego prostego programu w C z funkcją malloc.

dołącz

dołącz

int main(){

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

if (ptr==NULL){

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

}

else{

printf(„Pamięć jest przydzielona”);

}

powrót 0;

}

Zgodnie z powyższym programem, blok pamięci zostanie przydzielony. 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 przydzieleniu pamięci. Jeśli pamięć nie jest przydzielona, zwróci pusty wskaźnik. W związku z tym wiadomość zostanie wydrukowana, gdy pamięć nie jest przydzielona.

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

  • Obie te funkcje są zadeklarowane w pliku nagłówkowym. Jest to standardowy plik nagłówkowy biblioteki.
  • Obie funkcje są używane do dynamicznej alokacji pamięci.
  • Wskaźnik zwracany przez calloc i malloc powinien być rzutowany na określony typ.
  • W przypadku pomyślnej alokacji pamięci obie funkcje zwrócą wskaźnik z adresem bazowym bloku pamięci.
  • Jeśli alokacja pamięci się nie powiedzie, zostanie zwrócony wskaźnik pusty.

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

calloc vs malloc

calloc to funkcja do dynamicznej alokacji pamięci w pliku nagłówkowym stdlib.h języka C, która przydziela określoną liczbę bajtów i inicjalizuje je na zero. malloc to funkcja do dynamicznej alokacji pamięci w pliku nagłówkowym stdlib.h języka C, która przydziela określoną liczbę bajtów.
Znaczenie
calloc oznacza ciągły przydział. malloc oznacza alokację pamięci.
Składnia
calloc ma składnię podobną do void calloc(size_t_num, size_t size); malloc ma składnię podobną do void malloc(size_t_size);.
Liczba argumentów
calloc przyjmuje dwa argumenty. Jest to liczba bloków i rozmiar każdego bloku. malloc przyjmuje jeden argument. Jest to liczba bajtów.
Prędkość
calloc zajmuje niewiele więcej czasu niż malloc. Dzieje się tak z powodu dodatkowego kroku inicjalizacji przydzielonej pamięci przez zero. malloc jest szybszy niż calloc.

Podsumowanie – calloc vs malloc

W statycznej alokacji pamięci, takiej jak tablice, pamięć jest stała. Jeśli przechowywanych jest niewiele elementów, reszta pamięci jest marnowana. Może również powodować błędy, gdy przydzielona pamięć jest mniejsza niż wymagana pamięć. Dlatego używana jest dynamiczna alokacja pamięci. W języku C calloc i malloc zapewniają dynamiczną alokację pamięci. Różnica między calloc i malloc polega na tym, że calloc alokuje pamięć, a także inicjuje przydzielone bloki pamięci do zera, podczas gdy malloc alokuje pamięć, ale nie inicjuje bloków pamięci do zera. Malloc przyjmuje dwa argumenty, a calloc dwa argumenty.

Pobierz plik PDF z calloc vs malloc

Możesz pobrać wersję PDF tego artykułu i używać jej do celów offline zgodnie z notatką cytowania. Proszę pobrać wersję PDF tutaj: Różnica między calloc i malloc

Zalecana: