*   >> Lezen Onderwijs artikelen >> science >> programming

| C ++ | Dynamische Memory.

In het algemeen, wanneer u het coderen, moet u het bedrag van de variabelen die zullen worden in uw programma te specificeren, maar na het compileren, kun je niet de hoeveelheid te veranderen. Het dynamisch geheugen laat ons toe om het geheugen (van de hoop) en gratis is, terwijl onze programma loopt te wijzen.

Voor dat, we gaan de nieuwe

gebruiken en verwijderen

exploitanten en sommige pointers.

Altijd onthouden om het geheugen toegewezen vrij, anders zal er een geheugenlek zijn.

De types moet hetzelfde zijn

 float * ptrNewVariable = new int.; //Wrong.float* PtrNewVariable = new float; //Right.
int* PtrNewVariable = new int; //We hebben een nieuwe int variabledelete ptrNewVariable; //We bevrijden 

Voorbeeld:.

Wij zijn bezig met een spel, dus we vragen de speler hoeveel monsters hij zou willen vechten met

 nt main () {cout. int nNumber; //Sla het nummer in een variabele cin >> nNumber; //Wij verklaren een pointer die wijzen op een CMonster object. CMonster is een hypothetisch klasse.

CMonster * ptrMonsters = new CMonster [nNumber]; //Om de objecten: ptrMonsters [index] -> Fight (); //Net als een normale array. //Als we klaar bevrijden we het geheugen. verwijderen [] ptrMonsters; //Vergeet niet de array vorm van verwijderen. ptrMonsters = NULL; //We stellen het zo null het zal niet wijzen op het geheugen dat niet is toegewezen. 0 keren;}

Let op:

- Wanneer we nieuwe,

we moeten gebruiken verwijderen

- Wanneer we nieuw [],

we moeten gebruiken . verwijderen []


Vermijd geheugenlekken.

Situatie 1.


 leegte Search () {int * ptrNewVariable = new int [5]; //Nieuwe dynamisch toegekende variabele. //We hebben geen gebruik te verwijderen [] ptrNewVariable. Oopss. //Einde van de functie. De wijzer wordt verwijderd en het geheugen adres is verloren. Geheugenlek} 

Situatie 2.

 int * ptrNewVariable = new int.; //De aanwijzer houdt de variabele address.ptrNewVariable = new int; //Geheugenlek hier, de wijzer houdt de nieuwe variabele adres, //maar verloor de vorige, zodat u niet in staat zijn om te bevrijden it.

delete ptrNewVariable; //Verwijder de laatste toegewezen geheugen, maar niet de eerste.

Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.