Ohjelmoinnissa on välttämätöntä tallentaa laskennallinen tieto. Nämä tiedot tallennetaan muistiin. Tietojen tallennuksen muistipaikat tietokoneohjelmoinnissa tunnetaan muuttujina. Muuttujilla on tietty tietotyyppi. Siksi muisti on varattu ohjelmien suorittamiseen. Muisti voidaan varata kahdella tavalla. Ne ovat staattista muistin allokointia ja dynaamista muistin allokointia. Staattisessa muistivarauksessa, kun muisti on varattu, sitä ei voi muuttaa. Muistia ei voi käyttää uudelleen. Mutta dynaamisessa muistin allokoinnissa, kun muisti on varattu, sitä voidaan muuttaa. avainero staattisen ja dynaamisen muistin allokoinnin välillä on se staattisessa muistin allokoinnissa, kun muisti on varattu, muistin koko on kiinteä, kun dynaamisessa muistin allokoinnissa, kun muisti on varattu, muistin kokoa voidaan muuttaa.
1. Yleiskatsaus ja keskeiset erot
2. Mikä on staattisen muistin allokointi
3. Mikä on dynaaminen muistin allokointi
4. Staattisen ja dynaamisen muistin allokoinnin väliset yhtäläisyydet
5. Vertailu rinnakkain - staattinen vs. dynaamisen muistin allokointi taulukkomuodossa
6. Yhteenveto
Staattisessa muistin allokoinnissa allokoitu muisti on kiinteä. Kun muisti on varattu, sitä ei voi muuttaa. Muistia ei voida lisätä tai vähentää. Esimerkiksi C-kielellä, jos ohjelmoija kirjoittaa int x: n, mikä tarkoittaa, että muuttuja voi tallentaa kokonaisluvun. Tavujen määrä riippuu tietokoneesta. Siellä voi olla myös taulukkoja. Esim. int x [5]; Tämä x on taulukko, joka voi tallentaa samantyyppisen datajonon. Se voi tallentaa viisi kokonaislukuelementtiä. Se ei voi tallentaa enempää kuin viittä elementtiä. Java-ohjelmassa taulukko voidaan luoda seuraavasti: int arr [] = uusi int [5]; Arree-taulukko voi tallentaa 5 kokonaislukuarvoa, eikä se voi tallentaa enempää.
Kuva 01: Muistin allokointimenetelmät
Staattisessa muistin allokoinnissa, kun muuttujat on allokoitu, ne pysyvät. Alkuperäisen allokoinnin jälkeen ohjelmoija ei voi muuttaa muistia. Jos ohjelmoija on allokoinut taulukon, joka voi tallentaa 10 elementtiä, ei ole mahdollista tallentaa arvoja, jotka ylittävät mainitun määrän. Jos ohjelmoija alun perin allokoi taulukon, johon mahtuu 10 elementtiä, mutta tarvitsi vain viittä elementtiä, niin muistin tuhlaaminen tapahtuu. Tätä muistia ei enää tarvita, mutta muistia ei ole myöskään mahdollista käyttää uudelleen. Staattinen muistinjako on kiinteä, mutta toteutus on yksinkertaista ja helppoa, ja se on myös nopea.
Joskus on tarpeen muuttaa muistin kokoa. Joten muisti voidaan allokoida dynaamisesti. Tietoelementtien lisäyksistä ja poistoista riippuen muisti voi kasvaa tai kutistua. Se tunnetaan dynaamisena muistin allokointina.
C-kielellä, stdlib.h-otsikkotiedostossa, on neljä toimintoa dynaamiselle muistin allokoinnille. Ne ovat kalloc, malloc, realloc ja ilmaisia. Toiminto malloc () varaa vaaditun tavun koon ja palauttaa tyhjän osoittimen osoittaen allokoidun muistin ensimmäisen tavun. Toiminto calloc () allokoi vaaditun koon tavuja ja alustaa ne nollaan. Palauttaa sitten tyhjän osoittimen muistiin. Vapaa () -toimintoa käytetään allokoidun muistin uudelleensijoittamiseen. Ja uudelleenlokkitoiminto voi muokata aiemmin allokoitua muistia. Kun muistia on allokoitu kallocilla tai mallocilla, muistin koko on kiinteä, mutta sitä voidaan suurentaa tai pienentää uudelleensovitustoiminnolla. Java-järjestelmässä kokoelmia voidaan käyttää dynaamiseen muistin allokointiin.
Dynaamisen muistin allokoinnin tärkein etu on, että se säästää muistia. Ohjelmoija voi varata muistia tai vapauttaa muistin tarpeen mukaan. Muisti voidaan jakaa uudelleen suorituksen aikana, ja se voi vapauttaa muistin, kun sitä ei tarvita. Dynaaminen muistin allokointi on myös tehokasta kuin staattinen muistin allokointi. Yksi haittapuoli on, että dynaamisen muistin allokoinnin toteuttaminen on monimutkaista.
Staattinen vs. dynaamisen muistin allokointi | |
Staattinen muistinvaraus on menetelmä muistin varaamiseksi, ja kun muisti on varattu, se on kiinteä. | Dynaaminen muistin varaus on menetelmä muistin varaamiseksi, ja kun muisti on varattu, sitä voidaan muuttaa. |
muutos | |
Staattisessa muistin allokoinnissa ei ole mahdollista muuttaa kokoa alkuperäisen allokoinnin jälkeen. | Dynaamisessa muistin allokoinnissa muisti voidaan minimoida tai maksimoida vastaavasti. |
Toteutus | |
Staattinen muistijako on helppo toteuttaa. | Dynaaminen muistin varaus on monimutkainen toteuttaa. |
Nopeus | |
Staattisessa muistissa allokaatioiden suorittaminen on nopeampaa kuin dynaaminen muistin allokointi. | Dynaamisessa muistissa allokaatioiden suorittaminen on hitaampaa kuin staattisen muistin allokoinnin. |
Muistin käyttö | |
Staattisessa muistivarauksessa ei voi käyttää käyttämätöntä muistia uudelleen. | Dynaaminen muistin varaus mahdollistaa muistin uudelleenkäytön. Ohjelmoija voi varata enemmän muistia tarvittaessa. Hän voi vapauttaa muistin tarvittaessa. |
Ohjelmoinnissa staattinen muistin allokointi ja dynaaminen muistin allokointi ovat kaksi mekanismia muistin allokoimiseksi. Ero staattisen ja dynaamisen muistin allokoinnin välillä on se, että staattisessa muistin allokoinnissa, kun muisti on allokoitu, muistin koko on kiinteä, kun taas dynaamisessa muistin allokoinnissa, kun muisti on allokoitu, muistin kokoa voidaan muuttaa. Ohjelmoija voi sovelluksesta riippuen päättää, onko muistin oltava staattista vai dynaamista.
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio täältä: Ero staattisen ja dynaamisen muistin allokoinnin välillä
1.Kayal, Somnath. "SOMNATH KAYAL." Ero staattisen muistin allokoinnin ja dynaamisen muistin allokoinnin välillä, 1. tammikuuta 1970. Saatavilla täältä
2.tutorialspoint.com. ”Matriisit C.” Kohta. Saatavilla täältä
3.nareshtechnologies. Staattinen muisti vs dynaaminen muisti | C-kielen opetusohjelma, Naresh i Technologies, 19. syyskuuta 2016. Saatavana täältä