Rozdíl mezi calloc a malloc

Obsah:

Rozdíl mezi calloc a malloc
Rozdíl mezi calloc a malloc

Video: Rozdíl mezi calloc a malloc

Video: Rozdíl mezi calloc a malloc
Video: #51. Функции malloc(), free(), calloc(), realloc(), memcpy() и memmove() | Язык C для начинающих 2024, Listopad
Anonim

Klíčový rozdíl – calloc vs malloc

Při programování je nutné ukládat data. Data se ukládají do paměti. Tato místa v paměti jsou známá jako proměnné. Každá proměnná má specifický typ. Mohou to být celá čísla, plovoucí čísla, dvojice, znaky atd. Existují také datové struktury, které mohou ukládat sekvenční kolekci 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é indexu přiřadit hodnotu vyšší, než je deklarovaná velikost. Alokace paměti je pevná a nelze ji za běhu změnit. Další metodou přidělování paměti je dynamické přidělování paměti. Dynamická alokace paměti pomáhá v případě potřeby přidělit více paměti a v případě potřeby ji uvolnit. Soubor záhlaví má čtyři funkce pro dynamické přidělování paměti. calloc a malloc jsou dvě takové funkce. Klíčový rozdíl mezi calloc a malloc je v tom, že calloc alokuje paměť a také inicializuje přidělené paměťové bloky na nulu, zatímco malloc alokuje paměť, ale neinicializuje přidělenou paměť na nulu. Přístup k obsahu v calloc dá nulu, ale malloc dá nesmyslnou hodnotu.

Co je calloc?

Alokace paměti je proces přidělování paměti pro spouštěné programy. Někdy je potřeba změnit velikost paměti. Proto se používá dynamická alokace paměti. Provádí se pomocí ukazatelů. Ukazatele jsou referenční proměnné, které obsahují adresu jiné proměnné.

Rozdíl mezi calloc a malloc
Rozdíl mezi calloc a malloc

Obrázek 01: calloc a malloc

calloc znamená „souvislou alokaci“. Přiděluje více bloků paměti o stejné velikosti. Syntaxe calloc je následující. Chce to dva argumenty. Jsou to počet bloků a velikost každého bloku. Funkce calloc vrací ukazatel void, takže se použije operátor cast k vrácení typu ukazatele podle požadovaného datového typu.

voidcalloc(size_t num, size_t size);

Odkaz na níže uvedený jednoduchý program C.

include

include

int main(){

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

if (ptr==NULL){

printf(“Paměť není přidělena”);

}

else{

printf(“Paměť je přidělena”);

}

return 0;

}

Podle výše uvedeného programu je přidělen souvislý blok paměti, který pojme 20 prvků. Každý bude mít velikost celého čísla. Sizeof(int) se používá, protože typ celého čísla se liší kompilátor od kompilátoru.

Pokud je alokace paměti úspěšná, vrátí základní adresu paměťového bloku. Znamená to, že ukazatel ptr nyní ukazuje na základní adresu tohoto paměťového bloku. Všechny přidělené oblasti jsou inicializovány na nuly. Vytiskne zprávu o přidělení paměti. Pokud je alokace paměti neúspěšná, vrátí ukazatel null. Proto vytiskne zprávu Paměť není přidělena.

Co je malloc?

Funkce malloc se používá k přidělení požadovaného množství bajtů 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í ukazatel void, takže se použije operátor cast k vrácení typu ukazatele podle požadovaného datového typu.

Odkaz na níže uvedený jednoduchý program C s funkcí malloc.

include

include

int main(){

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

if (ptr==NULL){

printf(“Paměť není přidělena”);

}

else{

printf(“Paměť je přidělena”);

}

return 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 celočíselný typ. Pokud je paměť přidělena, vytiskne se zpráva o přidělení paměti. Pokud není paměť přidělena, vrátí se nulový ukazatel. Proto se vytiskne zpráva o nepřidělení paměti.

Jaké jsou podobnosti mezi calloc a malloc?

  • Obě tyto funkce jsou deklarovány v záhlaví souboru. Je to standardní soubor záhlaví knihovny.
  • Obě funkce se používají pro dynamické přidělování paměti.
  • Ukazatel vrácený calloc a malloc by měl být přetypován do konkrétního typu.
  • Při úspěšné alokaci paměti obě funkce vrátí ukazatel se základní adresou bloku paměti.
  • Pokud se alokace paměti nezdaří, bude vrácen nulový ukazatel.

Jaký je rozdíl mezi calloc a malloc?

calloc vs malloc

calloc je funkce pro dynamické přidělování paměti v hlavičce stdlib.h v jazyce C, která přiděluje určitý počet bajtů a inicializuje je na nulu. malloc je funkce pro dynamické přidělování paměti v hlavičce stdlib.h v jazyce C, která přiděluje určitý počet bajtů.
Význam
calloc znamená souvislou alokaci. malloc znamená alokaci paměti.
Syntaxe
calloc má syntaxi podobnou void calloc(size_t_num, size_t size); malloc má syntaxi podobnou void malloc(size_t_size);.
Počet argumentů
calloc má dva argumenty. Jedná se o počet bloků a velikost každého bloku. malloc má jeden argument. Je to počet bajtů.
Speed
calloc trvá o něco déle než malloc. Důvodem je další krok inicializace přidělené paměti nulou. malloc je rychlejší než calloc.

Shrnutí – calloc vs malloc

Při statickém přidělování paměti, jako jsme my pomocí polí, je paměť pevná. Pokud je uloženo málo prvků, zbytek paměti je promarněn. Může také způsobit chyby, když je přidělená paměť malá než požadovaná paměť. Proto se používá dynamická alokace paměti. V jazyce C calloc a malloc poskytují dynamickou alokaci paměti. Rozdíl mezi calloc a malloc je ten, že calloc alokuje paměť a také inicializuje alokované paměťové bloky na nulu, zatímco malloc alokuje paměť, ale neinicializuje paměťové bloky na nulu. Malloc bere dva argumenty, zatímco calloc dva argumenty.

Stáhněte si PDF calloc vs malloc

Verzi tohoto článku si můžete stáhnout ve formátu PDF a použít ji pro offline účely podle citace. Stáhněte si prosím PDF verzi zde: Rozdíl mezi calloc a malloc

Doporučuje: