Mi a malloc () C-ben?
A malloc () egy olyan függvény, amely lehetővé teszi a C számára, hogy dinamikusan foglalja le a memóriát a kupacból. A kupac egy olyan memóriaterület, ahol valamit tárolnak.
A malloc () az stdlib.h része, és ahhoz, hogy használni tudja, használnia kell #include
.
Hogyan kell használni a Malloc-ot
A malloc () kiosztott méretű memóriát oszt le, és egy mutatót visz a lefoglalt blokk elejére. Ennek a visszaadott mutatónak a megtartásához létre kell hoznunk egy változót. A mutatónak ugyanolyan típusúnak kell lennie, mint a malloc utasításban.
Itt mutatunk egy hamarosan megjelenő csárdák tömbjére
int* arrayPtr;
Más nyelvektől eltérően C nem ismeri azt az adattípust, amelyhez memóriát oszt ki; el kell mondani. Szerencsére a C-nek van egy neve sizeof()
, amelyet használhatunk.
arrayPtr = (int *)malloc(10 * sizeof(int));
Ez az utasítás a malloc-ot használta memória elkülönítésére egy 10 egész tömb számára. Mivel a méretek változhatnak a számítógépek között, fontos a sizeof () függvény használata a jelenlegi számítógép méretének kiszámításához.
A program végrehajtása során allokált memóriát felszabadítani kell a program bezárása előtt. A free
memóriához használhatjuk az free () függvényt
free( arrayPtr );
Ez az utasítás a korábban lefoglalt memóriát osztja le. A C nem jár garbage collector
hasonlóval, mint néhány más nyelv, például a Java. Ennek eredményeként a nem megfelelően felszabadított memória a program lezárása után is fel lesz osztva.
Mielőtt továbbmész ...
Felülvizsgálat
- A Malloc-ot dinamikus memória-elosztásra használják, és akkor hasznos, ha nem tudja a fordítási idő alatt szükséges memória mennyiségét.
- A memória allokálása lehetővé teszi az objektumok létezését az aktuális blokkon kívül.
- C referencia helyett érték mellett halad. A malloc használata memória hozzárendeléséhez, majd a mutató átadásához egy másik függvényhez hatékonyabb, mint ha a függvény újra létrehozná a struktúrát.
További információ a C programozásról:
- A kezdő kézikönyve a C programozáshoz
- Ha ... más magyarázat a C-ben
- A háromszintű operátor C-ben elmagyarázta