9. lecke
Kezdeni, hogy megvitassák a jellemzőit minden típusú memória.
statikus memóriát
Helyezzük egy statikus memória - van fenntartva idején a program indítását, és megjelent csak miután a program befejezi a munkáját.
Ahhoz, hogy a globális változók (bejelentett kívül minden blokk, különösen mielőtt megkezdődik az eljárás fő) és a statikus változók (előtte a típus, amely meghatározza a kulcsszó statikus. A változókat lehet bárhol, beleértve a szervezetben valamilyen funkciót, de hogy végezzen egy statikus változót a függvény maga specifikusan: megtartják értékek között a visszahívási funkció). A különbség a statikus és globális változók látható, amikor a program több fájlból áll: a globális változók készletét a kapcsolódó fájlok és statikus - csak fájl, ami már bejelentették.
nem ajánlott tartani a hossza a tárgy a statikus memóriában (pl tömbök).
Helyi memória (stack memória)
Feltéve, hogy a bejáratnál a program blokk felszabadult - a kilépő a blokk.
Ott esik deklarált változók egy blokkon belül (különösen a szervezet működését).
dinamikus memória
Lekötött és felszabadította - speciális utasítások (azaz a kezdeményezésére a fejlesztő ..). Ez lehetővé teszi, hogy a program során figyelemmel kíséri, és állítsuk be a használt memória mennyiségét, és ennek következtében olyan programokat képes kezelni nagy mennyiségű adat, elkerülve a korlátozásokat a fizikai memória a gép.
Hozzáférés a dinamikus memória csak akkor lehetséges jeleit, t. E. Nem lehet létrehozni a változókat, de akkor válasszuk ki azt a töredékek és kötődnek néhány támpontot.
A dinamikus memória
Memóriát használ az új üzemeltető. és megkönnyebbült - a delete operátor.
Egy olyan időszakban, amikor a dinamikus memóriát, meg kell vonni néhány mutatót a megfelelő típusú (elosztását jelzi a típusát és számát szükséges ilyen típusú sejteket).
Ha nem mentesíti a kupac, akkor lesz elfoglalva fel, ami nem elfogadható a program befejezése.
Elosztása során egy dinamikus változót (egy memória cella) azonnal megindítja az értéke:
Lehetőség van kiosztani több dinamikus memória sejtek, így a dinamikus tömb.
Ebből a célból, a mérete jelzi után zárójelben a típusát.
Törléséhez dinamikus tömb, és szabad a memória az üzemeltető által alkalmazott törli [].
Jobb létrehozása után egy dinamikus tömb automatikusan nullákkal töltjük fel (ellentétben a hagyományos álló vagy köteg).
A probléma akkor válik különösen akuttá, amikor az egész tömb elveszik a memóriában (nem vesz fel több helyet, mint a különálló változók).
Minden lépésnél a ciklus által létrehozott dinamikus tömb 100 elemek. Összesen hány ilyen tömbök jön létre 10, de csak az utolsó is, a memória fog megjelenni megjelenése után a sorozat. 9 tömbök továbbra is sok helyet foglalnak a memóriában, amíg a végén a program. 9 tömb elemei * 100 * 4 byte = 3600 byte az elveszett memória, amely nem lehet használni (akár ebben a program nem fut a többi).
Nagyon fontos, használata után a dinamikus memória emlékezni, hogy engedje el a megfelelő pillanatban!
- A program létre kell hozni egy dinamikus tömb 10 random egész számok a [0, 9], és megjeleníti a képernyőn. Minden dinamikus tömb mindig kell hagyni a memóriában, amint használtunk utoljára. Feltétlenül kövesse az időben rendbe megjelöli az egyes következő feladatokat.
- A program létre kell hoznia egy dinamikus tömb n véletlenszerű egész számok a [0, 9], és megjeleníti azt a képernyőn. a tömb mérete N kérik a felhasználó az elején a program.
- A program kell létrehozni a két tömb elemek véletlenszerűen tartományban [-25; 25], 10 elemek az egyes tömb, minden tömb kimenet jelenik meg külön sorban. Ezután a program célja, hogy hozzon létre egy dinamikus tömböt a megfelelő méretű és másolja az összes pozitív elemeit az első két. És az ebből eredő kiadási dinamikus tömb megjelenített sorokat.
Egy példa a munkaprogram a program:
Megjegyzés: lerövidíti a tömb - ez azt jelenti, ami egy módosított változatát, ne felejtsük el, hogy törölje az eredeti.
Egy példa a munkaprogram a program:
Egy példa a program (a második sorban a felhasználó bemenet):