*   >> lukeminen koulutus Artikkelit >> science >> programming

| C ++ | Dynaaminen Memory.

Yleensä kun olet koodaus, sinun on määritettävä määrä muuttujia, on oman ohjelman, mutta, kun kokoamiseen, et voi muuttaa määrää niistä. Dynaaminen muisti antaa meille mahdollisuuden varata muistia (kasasta) ja vapaa, se kun meidän ohjelma on käynnissä.

Tästä aiomme käyttää uusi

ja poistaa

operaattorit ja jotkut osoittimia.

Muista aina vapauttaa varatun muistin, muuten tulee muistivuoto. Tyypit on oltava sama.

 float * ptrNewVariable = uusi int; //Wrong.float* PtrNewVariable = uusi float; //Right.

int* PtrNewVariable = uusi int; //Meillä on uusi int variabledelete ptrNewVariable; //Me vapauttaa se. 

Esimerkki:

Teemme peli, joten pyydämme pelaaja kuinka monta hirviöitä hän haluaisi taistella.

 nt main () {cout int nNumber; //Tallentaa numeron muuttujaan cin >> nNumber; //Me julistamme osoitin, joka osoittaa CMonster objekti. CMonster on hypoteettinen luokka. CMonster * ptrMonsters = uusi CMonster [nNumber]; //Pääset esineet: ptrMonsters [index] -> Fight (); //Aivan kuten normaali array. //Kun olemme päättynyt meidän vapauttaa muistia.

poistaa [] ptrMonsters; //Muista joukko muodossa delete. ptrMonsters = NULL; //Asetimme se null joten sitä ei osoittaa muistia jota ei ole jaettu. return 0;}

Muista:

- Kun käytämme uusi,

meidän on käytettävä poistaa.

- Kun käytämme uusi [],

meidän on käytettävä poistaa [].


Vältä muistivuodot.

Tilanne 1.

 void Haku () {int * ptrNewVariable = uusi int [5]; //Uusi dynaaminen osuus muuttuvista. //Emme käytä poistaa [] ptrNewVariable. Oopss. //Loppu toiminto. Osoitin poistetaan ja muisti osoite menetetty.

Muistivuoto.}

Tilanne 2.

 int * ptrNewVariable = uusi int; //Osoitin pitää muuttuja address.ptrNewVariable = uusi int; //Muistivuoto täällä, osoitin pitää uuden muuttujan osoite, //mutta menetti edellinen, joten et voi vapauttaa it.delete ptrNewVariable; //Poista viimeinen jaettu muisti, mutta ei ensimmäinen.


Copyright © 2008 - 2016 lukeminen koulutus Artikkelit,https://koulutus.nmjjxx.com All rights reserved.