Dinamikus memória - studopediya

Minden deklarált változók a programban helyezzük egy folytonos memória régió úgynevezett adatszegmensben. A hossza adatszegmensben meghatározni 80x86 mikroprocesszor architektúra és 65536 bájt, ami nehézségeket okozhat a kezelése nagy mennyiségű adatot. Másrészt, a személyi számítógép memória kapacitás elegendő a sikeres megoldás a problémák nagy adat dimenzió. A kiutat a használata úgynevezett dinamikus memória.

Dinamikus memória - a memória egy személyi számítógép a program által biztosított működése során kevesebb adat szegmens (64K), a köteg (általában 16 KB) és a tényleges test a program. Alapértelmezésben a kupac mérete határozza meg a rendelkezésre álló összes memória a számítógépen.

Dinamikus memória feldolgozására használatos nagy tömbök dimenzió adatokat. Sok gyakorlati problémák nehéz vagy lehetetlen megoldani anélkül, hogy a dinamikus memóriát. Dinamikus elosztás segítségével az adatokat közvetlenül a dinamikus memória a program futása közben. Ezzel szemben a statikus elhelyezés végzett Turbo Pascal fordító a fordítás során a program. Dinamikus elosztása nem ismert bármilyen típusú és mennyiségű adatot kell elhelyezni, ezeket nem lehet hozzáférni a neve, mint egy statikus változót.

Így minden index egy aggregált két szó (Word típusú adatok) kezelik egy szegmens és egy eltolt. Alapján pointerek segítségével lehet helyezni bármely dinamikus memória adattípusok.

A Turbo Pascal lehetséges, hogy állapítsa meg a mutató, és nem kötődik, hogy ugyanabban az időben egy adott típusú adatot. Mert ez a szabvány típusú mutató:

Az ilyen mutatók nevezik típustalan. Segítségükkel célszerű dinamikusan osztja az adatok szerkezete és típusa, amelyek során változott a program.

ez nagyon is lehetséges, míg

betiltották, mert R 1 'r3ukazyvayut különböző adattípusok. Ez a korlátozás azonban nem vonatkozik a típustalan mutatók, így írhatunk

Kapcsolatfelvétel a megadott változók típusa az alábbiak szerint:

A szerkezet a dinamikus memória

Elhelyezkedés kupac a számítógép memóriájában

Minden műveletet hajtanak végre egy csomó futó speciális alprogramok hívják a rendszergazda a halom. Automatikusan csatlakozik a programhoz a linker Turbo Pascal és tartja nyilván az összes szabad töredékek egy kupacban.

Eljárások és függvények dolgozó dinamikus memória

CSEG - értékét adja vissza a nyilvántartásban tárolt CSmikroprotsessora (az elején a program szegmens terül CSsoderzhitsya program kezdete kód). Eredmény Szó visszatért a keresett szó.

Dobja (tipizirovannyy_ukazatel) - eljárás visszatér egy csomó dinamikus memória fragmentum, amely korábban foglaljuk gépelt mutatót. Amikor újra eljárás alkalmazásával kapcsolatban a már felszabadított fragmens futásidejű hiba lép fel.

DSEG függvény a megadott értéket a nyilvántartásban tárolt DS mikroprocesszor (az elején a program szegmens terül DSsoderzhitsya adat start program). Eredmény Szó visszatért a keresett szó.

FreeMem (netipizirovannyy_ukazatel, méret) - az eljárás visszatér egy csomó dinamikus memória fragmentum, amely korábban fenntartott típustalan mutatót. Ott méret - bájtban a felszabadult töredék.

GetMem (netipizirovannyy_ukazatel, méret) - eljárás tartalékok típustalan mutató fragmensét a szükséges méret a dinamikus memória.

Mark (PTR) - eljárás tárolja az aktuális értéket HeapPtr kupac mutatót. Itt PTR - egy pointert bármilyen típusú, amelyben az aktuális érték kerül visszaadásra HeapPtr. Együtt használják az eljárást Releasedlya kiadás a kupac.

MaxAvail - visszaadja a méret byte-ban, a legnagyobb egybefüggő részletét a halom. Az eredmény típusú LongInt.

MemAvail - a függvény a méretét byte teljes szabad halom helyet. Az eredmény típusú LongInt.

Új (tipizirovannyy_ukazatel) - az eljárás számára van fenntartva forgalomba a halom variábilis fragmens. Új eljárást nevezhetjük függvényében. Ebben az esetben a paraméter utalás ez a változó típusát, helyezzenek el egy halom, és a New függvény visszaad egy pointert. például:

PTR (SEG, OFS) - függvény egy típusú érték Pointerpo előre meghatározott szegmens SEGI offset OFS. Ott SEG - expressziós Szó típusú, amely tartalmaz egy szegmens; OFS- expressziós WORD tartalmazó típusú ofszet. A visszatérési érték egy funkció kompatibilis a mutatót minden formáját.

Sizeof (x) - függvény a hossza bájtokban a belső ábrázolás az említett tárgy. Amennyiben x - a változó neve, funkció vagy típus.