Při programování je nutné ukládat data. Data jsou uložena v paměti. Tato paměťová místa jsou známa jako proměnné. Každá proměnná má specifický typ. Mohou to být celá čísla, vznášet se, zdvojnásobit, znaky atd. Existují také datové struktury, které mohou ukládat sekvenční soubor prvků stejného typu s pevnou velikostí. Je to pole. Programátor musí deklarovat velikost pole. Pokud programátor deklaruje pole celých čísel pro pět prvků, není možné přiřadit hodnotu indexu vyššímu než deklarovaná velikost. Přidělení paměti je pevné a nelze jej za běhu změnit. Další metodou alokace paměti je dynamické alokace paměti. Dynamické přidělení paměti pomáhá přiřadit více paměti v případě potřeby a v případě potřeby uvolnit. Soubor záhlaví má čtyři funkce pro dynamické přidělení paměti. calloc a malloc jsou dvě takové funkce. klíčový rozdíl mezi calloc a malloc je to calloc přiděluje paměť a také inicializuje přidělené bloky paměti na nulu, zatímco malloc přiděluje paměť, ale neinicializuje přidělené paměti na nulu. Přístup k obsahu v calloc dá nulu, ale malloc dá hodnotu odpadu.
1. Přehled a klíčový rozdíl
2. Co je calloc
3. Co je to malloc
4. Podobnosti mezi calloc a malloc
5. Porovnání vedle sebe - calloc vs malloc v tabulkové formě
6. Shrnutí
Přidělení paměti je proces přiřazování paměti pro spouštějící programy. Někdy je nutné změnit velikost paměti. Proto se používá dynamické přidělení paměti. To se provádí pomocí ukazatelů. Ukazatele jsou referenční proměnné, které drží adresu jiné proměnné.
Obrázek 01: calloc a malloc
calloc je zkratka pro „souvislé alokace“. Přiděluje více bloků paměti se stejnou velikostí. Syntaxe pro calloc je následující. Vyžaduje to dva argumenty. Jedná se o počet bloků a velikost každého bloku. Funkce calloc vrací neplatný ukazatel, takže operátor casting se používá k vrácení typu ukazatele podle požadovaného datového typu.
void * calloc (size_t num, size_t size);
Viz níže uvedený jednoduchý program C.
#zahrnout
#zahrnout
int main ()
int ptr * = (int *) calloc (20, sizeof (int));
if (ptr == NULL)
printf („Paměť není přidělena“);
jiný
printf („Přidělení paměti“);
návrat 0;
Podle výše uvedeného programu je přidělen souvislý blok paměti, který pojme 20 prvků. Každý z nich bude mít celé číslo. Velikost (int) se používá, protože typ integer se liší od kompilátoru k kompilátoru.
Pokud je přidělení paměti úspěšné, vrátí základní adresu bloku paměti. To znamená, že ukazatel ptr nyní ukazuje na základní adresu tohoto paměťového bloku. Všechny alokované oblasti jsou inicializovány na nuly. Bude vytištěna zpráva přidělené paměti. Pokud je přidělení paměti neúspěšné, vrátí nulový ukazatel. Proto bude tisknout Paměť není přidělena zpráva.
Funkce malloc se používá k alokaci požadovaného množství bytů v paměti. Syntaxe pro malloc je následující. Velikost představuje požadovanou paměť v bajtech.
void * malloc (size_t_size);
Funkce malloc vrací neplatný ukazatel, takže operátor odevzdání se používá k vrácení typu ukazatele podle požadovaného datového typu.
Podívejte se na níže uvedený jednoduchý program C s funkcí malloc.
#zahrnout
#zahrnout
int main ()
int ptr * = (int *) malloc (10 * sizeof (int));
if (ptr == NULL)
printf („Paměť není přidělena“);
jiný
printf („Přidělení paměti“);
návrat 0;
Podle výše uvedeného programu bude přidělen blok paměti. Ukazatel ukazuje na počáteční adresu přidělené paměti. Vrácený ukazatel je převeden na celé číslo. Pokud je přidělena paměť, bude vytištěna zpráva o přidělení paměti. Pokud není paměť přidělena, vrátí se nulový ukazatel. Proto nebude přidělena paměť, zpráva se vytiskne.
calloc vs malloc | |
calloc je funkce pro dynamické přidělování paměti v záhlaví souboru stdlib.h jazyka C, který přiděluje určitý počet bajtů a inicializuje je na nulu. | malloc je funkce pro dynamické přidělení paměti v záhlaví souboru stdlib.h jazyka C, který přiděluje určitý počet bytů. |
Význam | |
calloc je zkratka pro souvislé rozdělení. | malloc znamená přidělení paměti. |
Syntax | |
calloc následuje syntaxi podobnou void * calloc (size_t_num, size_t size); | malloc sleduje syntaxi podobnou void * malloc (size_t_size);. |
Počet argumentů | |
calloc bere dva argumenty. Jedná se o počet bloků a velikost každého bloku. | malloc bere jeden argument. Je to počet bajtů. |
Rychlost | |
calloc trvá trochu déle než malloc. Důvodem je další krok inicializace přidělené paměti nulou. | malloc je rychlejší než calloc. |
Při přidělení statické paměti, jako my pomocí polí, je paměť pevná. Pokud je uloženo jen málo prvků, zbylá část paměti je zbytečná. Může také způsobit chyby, pokud je přidělená paměť malá než požadovaná paměť. Proto se používá dynamické přidělení paměti. V jazyce C poskytují calloc a malloc dynamické přidělení paměti. Rozdíl mezi calloc a malloc spočívá v tom, že calloc přiděluje paměť a také inicializuje přidělené bloky paměti na nulu, zatímco malloc přiděluje paměť, ale neinicializuje bloky paměti na nulu. Malloc bere dva argumenty, zatímco calloc bere dva argumenty.
Můžete si stáhnout PDF verzi tohoto článku a použít ji pro účely offline podle citace. Stáhněte si PDF verzi zde: Rozdíl mezi calloc a malloc
1.Kumar, Krišane. "Rozdíl mezi Malloc a Calloc v C." Cs-Fundamentals.com, Cs-Fundamentals.com. K dispozici zde
2. „Přidělení dynamické paměti C.“ Wikipedia, Wikimedia Foundation, 13. ledna 2018. K dispozici zde
3. „Calloc () versus malloc ().“ GeeksforGeeks, 14. června 2017. K dispozici zde