malloc C-ben: Dinamikus memóriaallokáció C-ben magyarázva

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 freememó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 collectorhasonló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