A programozás során számítási adatokat kell tárolni. Ezeket az adatokat a memória tárolja. Az adatok számítógépes programozáshoz való tárolására szolgáló memóriahelyeket változónak nevezzük. A változóknak egy meghatározott adattípusuk van. Ezért a memóriát a programok futtatásához szánják. A memória kétféle módon osztható el. Ezek statikus memória allokáció és dinamikus memória allokáció. Statikus memóriakiosztás esetén a memória lefoglalása után nem lehet megváltoztatni. A memória nem használható újra. A dinamikus memóriaelosztásban azonban a memória allokálása után meg lehet változtatni. Az kulcs különbség a statikus és a dinamikus memóriaelosztás között ez statikus memória allokációban, ha a memória el van osztva, a memória mérete rögzítve van, míg a dinamikus memória allokációban, miután a memóriát kiosztották, a memória mérete megváltoztatható.
1. Áttekintés és a legfontosabb különbség
2. Mi a statikus memória allokáció?
3. Mi a dinamikus memória allokáció?
4. A statikus és a dinamikus memória allokáció közötti hasonlóságok
5. Side by side összehasonlítás - Statikus és dinamikus memória allokáció táblázatos formában
6. Összegzés
Statikus memóriaelosztás esetén a kiosztott memória rögzítve van. A memória lefoglalása után nem változtatható meg. A memória nem növelhető vagy csökkenthető. Például C nyelven, ha a programozó int x-et ír, ami azt jelenti, hogy a változó egész számot tárolhat. A bájtok száma a számítógéptől függ. Lehetnek tömbök. Például. int x [5]; Ez az x tömb, amely azonos típusú adatsort képes tárolni. Öt egész elemet képes tárolni. Legfeljebb öt elemet képes tárolni. A Java-ban tömb hozható létre: int arr [] = új int [5]; Az 'arr' tömb 5 egész számot tárolhat, és ennél többet nem tud tárolni.
01. ábra: Memóriaelosztási módszerek
A statikus memória allokációban, amint a változók kiosztásra kerülnek, állandóak maradnak. A kezdeti kiosztást követően a programozó nem tudja átméretezni a memóriát. Ha a programozó olyan tömböt rendelt el, amely 10 elemet képes tárolni, akkor nem lehetséges a megadott értéknél nagyobb értékek tárolása. Ha a programozó kezdetben olyan tömböt osztott ki, amely 10 elemet képes tárolni, de csak 5 elemre volt szüksége, akkor memória pazarlás jelentkezik. Erre a memóriára már nincs szükség, de a memória ismételt felhasználása nem lehetséges. A statikus memóriakiosztás rögzített, de a végrehajtás egyszerű és könnyű, és gyors.
Időnként meg kell változtatni a memória méretét. Tehát a memória dinamikusan elosztható. Az adatelemek beillesztésétől és törlésétől függően a memória megnőhet vagy csökkenhet. Dinamikus memória allokációnak nevezzük.
A C nyelven, az stdlib.h fejléc fájlban négy funkció található a dinamikus memóriaelosztáshoz. Calloc, malloc, realloc és ingyenesek. A malloc () függvény kioszt egy szükséges méretű bájtot, és egy érvénytelen mutatót ad vissza, mutatva a kiosztott memória első bájtját. A calloc () függvény kioszt egy szükséges méretű bájtot, és nullára inicializálja. Ezután az üres mutatót visszaadja a memóriához. Az ingyenes () függvényt az allokált memória újraelosztására használják. Az realloc funkció módosíthatja az előzőleg kiosztott memóriát. A memória allokálása a calloc vagy malloc használatával rögzítve van, de a memória mérete rögzített, de az realloc funkcióval növelhető vagy csökkenthető. A Java-ban a gyűjtemények dinamikus memóriaelosztáshoz használhatók.
A dinamikus memóriaelosztás fő előnye, hogy memóriát takarít meg. A programozó szükség szerint memóriát foglalhat el vagy szabadíthat fel. A memória átcsoportosítható a végrehajtás során, és felszabadíthatja a memóriát, amikor erre nincs szükség. A dinamikus memória allokáció szintén hatékony, mint a statikus memória allokáció. Az egyik hátrány az, hogy a dinamikus memóriaelosztás megvalósítása összetett.
Statikus és dinamikus memóriakiosztás | |
A statikus memória allokáció egy módszer a memória allokálására, és a memória allokálása után rögzítve van. | A dinamikus memóriakiosztás egy olyan módszer, amellyel a memóriát el lehet osztani, és miután a memória el lett osztva, megváltoztatható. |
Módosítás | |
A statikus memóriaelosztásnál a kezdeti allokáció után nem lehet átméretezni. | A dinamikus memóriaelosztásnál a memória minimalizálható vagy ennek megfelelő lehet. |
Végrehajtás | |
A statikus memóriaelosztást könnyű végrehajtani. | A dinamikus memóriaelosztás végrehajtása bonyolult. |
Sebesség | |
A statikus memóriában az allokáció végrehajtása gyorsabb, mint a dinamikus memória allokáció. | A dinamikus memóriában az allokáció végrehajtása lassabb, mint a statikus memória allokációja. |
Memóriahasználat | |
Statikus memóriaelosztás esetén nem szabad újra felhasználni a fel nem használt memóriát. | A dinamikus memóriaelosztás lehetővé teszi a memória újrafelhasználását. A programozó szükség esetén több memóriát foglalhat el. Felszabadíthatja a memóriát, ha szükséges. |
A programozás során a statikus memória allokáció és a dinamikus memória allokáció kétféle mechanizmus a memória allokálására. A statikus és a dinamikus memóriaelosztás közötti különbség az, hogy a statikus memória allokációjakor, amikor a memóriát kiosztják, a memória mérete rögzítve van, míg a dinamikus memória allokációjában, miután a memóriát kiosztották, a memória mérete megváltoztatható. A programozó az alkalmazástól függően eldöntheti, hogy a memória statikus vagy dinamikus legyen-e.
Letöltheti e cikk PDF verzióját, és offline célokra felhasználhatja, az idézet megjegyzésének megfelelően. Töltse le a PDF verziót itt: Különbség a statikus és a dinamikus memóriakiosztás között
1.Kayal, Somnath. - SOMNATH KAYAL. Különbség a statikus memória allokáció és a dinamikus memória allokáció között, 1970. január 1.. Itt érhető el
2.tutorialspoint.com. „Tömbök C-ben” A lényeg. Itt érhető el
3.nareshtechnologies. Statikus memória vs dinamikus memória | C nyelvtanfolyam, Naresh i Technologies, 2016. szeptember 19. Itt érhető el