malloc C: paaiškinta dinaminė atminties paskirstymas C

Kas yra malloc () C?

malloc () yra bibliotekos funkcija, leidžianti C dinamiškai paskirstyti atmintį iš kaupo. Krūva yra atminties sritis, kurioje kažkas yra saugoma.

malloc () yra stdlib.h dalis ir norėdami jį naudoti, turite naudoti #include .

Kaip naudotis Malloc

malloc () paskirsto prašomo dydžio atmintį ir grąžina žymeklį į skirto bloko pradžią. Norėdami laikyti šį grąžintą rodyklę, turime sukurti kintamąjį. Rodyklė turi būti to paties tipo, naudojama malloc sakinyje.

Čia pateiksime rodyklę į netrukus pasirodysiantį intų masyvą

int* arrayPtr;

Skirtingai nuo kitų kalbų, C nežino duomenų tipo, kuriam skiria atmintį; reikia pasakyti. Laimei, C turi funkciją, vadinamą ja sizeof(), kurią galime naudoti.

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

Šiame teiginyje „malloc“ buvo skirta atminti 10 sveikųjų skaičių masyvui. Kadangi dydžiai gali skirtis tarp kompiuterių, svarbu apskaičiuoti dydį dabartiniame kompiuteryje naudoti funkciją sizeof ().

Visą atmintį, paskirstytą vykdant programą, reikės atlaisvinti prieš uždarant programą. Norėdami freeatminti, galime naudoti nemokamą () funkciją

free( arrayPtr );

Šis teiginys paskirstys anksčiau skirtą atmintį. „C“ nėra garbage collectorpanašus į kai kurias kitas kalbas, tokias kaip „Java“. Todėl netinkamai atlaisvinta atmintis ir toliau bus skiriama uždarius programą.

Prieš eidami toliau ...

Apžvalga

  • „Malloc“ naudojamas dinaminiam atminties paskirstymui ir yra naudingas, kai nežinote, kiek atminties reikia kompiliavimo metu.
  • Paskirstant atmintį objektai gali egzistuoti už dabartinio bloko ribų.
  • C praeina pagal vertę, o ne į etaloną. „Malloc“ naudojimas priskirti atmintį ir tada perkelti rodyklę į kitą funkciją yra efektyvesnis nei funkcijai atkurti struktūrą.

Daugiau informacijos apie C programavimą:

  • Pradedančiųjų C programavimo vadovas
  • Jei ... kitas paaiškinimas C paaiškintas
  • Paaiškino trijų komponentų operatorius C