Kluczowa różnica: "Calloc" i "Malloc" odnoszą się do wydajności dynamicznego przydzielania pamięci w języku programowania C. "Calloc" inicjalizuje przydzieloną pamięć zerową, natomiast "malloc" nie.
Zarówno "calloc", jak i "malloc" są standardowymi funkcjami bibliotecznymi.
Jego składnia jest następująca:
void * calloc (number_of_blocks, size_of_each_block_in_bytes);
Tutaj "void" jest ogólną funkcją C, która nie zwraca żadnej wartości. Liczba elementów w pierwszym argumencie określa rozmiar w bajtach jednego elementu do drugiego argumentu. Adres jest zwracany po udanym partycjonowaniu, w przeciwnym razie zwracana jest wartość NULL po każdym niepowodzeniu tej funkcji.
Jego składnia jest następująca:
void * malloc (size_in_bytes);
W szczególności zwraca adres w sposób ogólny (void *). Jeśli "malloc" nie może przydzielić pamięci, zwraca -1, w przeciwnym razie zwraca adres, z którego przydzielona jest pamięć. Przydzielona pamięć może mieć postać liczby całkowitej, poprzez podanie adresu void jako int *; przydzielona pamięć może być również w formie float, po prostu przez podanie tego samego adresu void jako float *.
Porównanie między Calloc i Malloc:
Calloc | Malloc | |
Podstawowe funkcje | Funkcja biblioteczna przydziela region pamięci, który jest wystarczająco duży, aby pomieścić "n elementów" o "rozmiarach" bajtów każdy. | Funkcja biblioteczna przydziela tylko "rozmiar" bajtów pamięci. |
Inicjalizacja | Inicjuje zawartość pamięci na zera. | Nie inicjalizuje zawartości pamięci na zera. |
Liczba argumentów | Oto dwa argumenty. | Tutaj jest tylko jeden argument. |
Przydzielone wartości | Przydzielony region jest inicjowany do zera. | Zawartość przydzielonej pamięci nie jest zmieniana, tzn. Pamięć zawiera nieprzewidywalne lub śmieciowe wartości, co stwarza ryzyko. |
Zwraca wartość | void wskaźnik (void *). Po pomyślnym przydzieleniu zwracany jest wskaźnik do bloku pamięci. | void wskaźnik (void *). Po pomyślnym przydzieleniu zwracany jest wskaźnik do bloku pamięci. |