*   >> läser Utbildning artiklar >> science >> programming

| C ++ | Dynamic Memory.

Generellt när du kodar, måste du ange mängden variabler som kommer att vara i ditt program, men efter att sammanställa, kan du inte ändra mängden av dem. Den dynamiska minnet tillåter oss att allokera minne (från högen) och fri det medan vårt program körs. Omdömen

För att vi kommer att använda ny Mössor och radera

operatörer och vissa pekare.

Kom alltid ihåg att frigöra minne tilldelas, annars blir det en minnesläcka. Typerna måste vara samma Omdömen

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

int* PtrNewVariable = new int; //Vi har en ny int variabledelete ptrNewVariable; //Vi befria den 

. Exempel: Omdömen Vi gör ett spel, så vi ber spelaren hur många monster han vill slåss med

 nt main () {cout. int nNumber; //Förvara numret i en variabel cin >> nNumber; //Vi förklarar en pekare som pekar på en CMonster objekt. CMonster är en hypotetisk klass. CMonster * ptrMonsters = new CMonster [nNumber]; //För att få tillgång till objekt: ptrMonsters [index] -> Fight (); //Precis som en vanlig array. //När vi är färdiga vi frigöra minnet.

radera [] ptrMonsters; //Kom ihåg Matrisformen av delete. ptrMonsters = NULL; //Vi sätter den till null så det kommer inte att peka på minnet som ännu inte tilldelats. återvända 0;}

Kom ihåg:

- När vi använder ny, Omdömen vi måste använda radera

- När vi använder nya [], Omdömen vi måste använda radera [].


Undvik minnesläckor. Omdömen

Situation 1.

 void Sök () {int * ptrNewVariable = new int [5]; //Nytt dynamiskt allokerade rörliga. //Vi använde inte radera [] ptrNewVariable. Oopss. //Slut på funktion.

Pekaren raderas och minnesadress går förlorad. Minnesläcka}

Situation 2. Omdömen

 int * ptrNewVariable = new int. //Pekaren håller variabeln address.ptrNewVariable = new int; //Minnesläcka här, håller pekaren den nya variabeln adress, //men förlorade den tidigare, så du kommer inte att kunna frigöra it.delete ptrNewVariable; //Radera den sista tilldelade minne, men inte den första.


Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.