*   >> Lese Utdanning Artikler >> science >> programming

| C ++ | Dynamic Memory.

Vanligvis, når du er koding, må du angi hvor variabler som vil være i programmet, men etter kompilering, kan du ikke endre mengden av dem. Den dynamiske minnet tillater oss å allokere minne (fra haugen) og fri den mens vårt program er i gang.

For at vi skal bruke ny Hotell og slette

operatører og noen pekere.

Husk alltid å frigjøre minne som er tildelt, ellers vil det være en minnelekkasje. Typene må være den samme

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

int* PtrNewVariable = new int; //Vi har en ny int variabledelete ptrNewVariable; //Vi frigjøre den 

Eksempel:.

Vi gjør et spill, så vi ber om spilleren hvor mange monstre han ønsker å kjempe med

 nt main () {cout. int nNumber; //Lagre telefonnummeret i en variabel cin >> nNumber; //Vi erklærer en peker som vil peke på en CMonster objekt. CMonster er en hypotetisk klasse. CMonster * ptrMonsters = new CMonster [nNumber]; //For å få tilgang til objekter: ptrMonsters [Indeks] -> Fight (); //Akkurat som en vanlig array. //Når vi er ferdig vi frigjøre minne.

delete [] ptrMonsters; //Husk rekken form av slette. ptrMonsters = NULL; //Vi setter den til null, så det vil ikke peke til minne som ikke er tildelt. returnere 0;}

Husk:

- Når vi bruker ny, etter vi må bruke slett

- Når vi bruker new [], etter vi må bruke slett [].


Unngå minnelekkasjer.

Situasjon 1.

 void Søk () {int * ptrNewVariable = new int [5]; //New dynamisk allokert variabel. //Vi brukte ikke slette [] ptrNewVariable. Oopss. //Slutt på funksjonen. Pekeren blir slettet, og minnet adressen er tapt.

Minnelekkasje}

Situasjon 2.

 int * ptrNewVariable = new int.; //Pekeren holder variable address.ptrNewVariable = new int; //Memory lekkasje her, holder pekeren den nye variabelen adresse, //men mistet den forrige, så du vil ikke være i stand til å frigjøre it.delete ptrNewVariable; //Slett den siste allokert minne, men ikke den første.


Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.