Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Kľúčové charakteristiky dynamického skladovania:
* pridelenie runtime: Počas vykonávania programu sa požaduje a priradí pamäť.
* Flexibilita: Umožňuje programom zaobchádzať s rôznymi množstvami údajov bez toho, aby bolo potrebné vopred prideliť blok s pevnou veľkosťou. Je to nevyhnutné na riešenie neznámych alebo zmeny veľkostí údajov.
* pridelenie haldy: Dynamická pamäť sa zvyčajne prideľuje z haldy, oblasti pamäte špeciálne navrhnutej na tento účel. (Naopak, statické premenné sa nachádzajú v segmente údajov alebo zásobníku).
* Manual Management (často): V mnohých jazykoch (ako C a C ++) je programátor zodpovedný za správu pridelenej pamäte - požaduje ju, ak je to potrebné, pomocou funkcií ako `Malloc` (C) alebo` new` (C ++) a na uvoľnenie po dokončení pomocou „Free` (C) alebo„ C ++). Neschopnosť uvoľňovania pamäte vedie k úniku pamäte.
* Zbierka odpadu (niekedy): V iných jazykoch (ako Java, Python, JavaScript, Go, atď.), Runtime prostredie automaticky spravuje pamäť prostredníctvom zberu odpadu. To znamená, že programátor priamo neprideľuje ani nezameriava pamäť; Zberateľ odpadu automaticky identifikuje a získava regeneráciu nevyužitej pamäte.
Príklad (ilustratívne C ++):
`` C ++
#include
#include
int main () {
// Dynamické pole pomocou vektora (automaticky spracováva pamäť)
std ::vektor
int číselné čísla;
std ::cout <<"Zadajte počet prvkov:";
Std ::Cin>> číselné čísla;
// Pridajte prvky dynamicky
pre (int i =0; i <čísely; ++ i) {
myDynamicarray.push_back (i);
}
// manuálne dynamické pridelenie (vyžaduje explicitné deaktivácie)
int *dynamicIntarray =new int [numElements]; // prideliť pamäť pre číselné celé čísla
// ... Použite DynamicIntarray ...
Odstrániť [] DynamicIntarray; // Deal lopate pamäť - rozhodujúce, aby ste sa vyhli úniku pamäte!
návrat 0;
}
`` `
V tomto príklade „STD ::Vector` používa správu dynamickej pamäte automaticky, zatiaľ čo` new` a `delete []` demonštrovať manuálne pridelenie a deaktiváciu. Veľkosť „vektora“ a poľa `int` nie je známa až do behu.
Dynamické úložisko je rozhodujúce pre budovanie flexibilných a efektívnych programov, ktoré sa môžu prispôsobiť rôznym požiadavkám na údaje. Predstavuje však aj zložitosť, najmä v jazykoch, v ktorých je potrebná správa manuálnej pamäte, pretože úniky pamäte a visiace ukazovatele sa môžu stať významnými problémami, ak sa s nimi zaobchádza opatrne.