Mi a malloc C-ben?
A malloc () függvény a memóriafoglalást jelenti. Ez egy olyan funkció, amelyet a memória blokkjának dinamikus lefoglalására használnak. Foglal egy meghatározott méretű memóriaterületet, és visszaadja a memóriahelyre mutató nullmutatót. A visszaadott mutató általában érvénytelen típusú. Ez azt jelenti, hogy bármely mutatóhoz hozzárendelhetünk malloc funkciót.
Szintaxis
ptr = (cast_type *) malloc (byte_size);
Itt,
- A ptr a cast_type mutató.
- A malloc függvény visszaad egy mutatót a byte_size lefoglalt memóriájába.
Example: ptr = (int *) malloc (50)
Ennek a utasításnak a sikeres végrehajtása esetén 50 bájt memóriaterület van fenntartva. A fenntartott terület első bájtjának címe az int típusú ptr mutatóhoz van hozzárendelve.
Vegyünk egy másik példát a malloc megvalósítására:
#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}
Kimenet:
Value of the 6th integer is 480
- Figyelje meg, hogy a sizeof (* ptr) helyett a sizeof (int) helyett a kód robusztusabbá tétele volt, amikor a * ptr deklarációt később más adattípusra írják.
- Az allokáció meghiúsulhat, ha a memória nem elegendő. Ebben az esetben NULL mutatót ad vissza. Tehát a NULL mutató ellenőrzéséhez kódot kell tartalmaznia.
- Ne feledje, hogy a lefoglalt memória összefüggő, és tömbként kezelhető. A zárójelek használata helyett mutatós aritmetikát használhatunk a tömb elemek eléréséhez. Azt javasoljuk, hogy a + gombbal utaljon a tömb elemekre, mert a ++ vagy a + = növekmény használata megváltoztatja a mutató által tárolt címet.
A Malloc függvény használható a karakter adattípussal, valamint az összetett adattípusokkal, például a struktúrákkal.