*   >> Læs Uddannelse artikler >> science >> programming

| C ++ | Dynamisk Memory.

Generelt, når du er kodning, du nødt til at angive størrelsen af ​​variabler, der vil være i dit program, men efter kompilering, kan du ikke ændre mængden af ​​dem. Den dynamiske hukommelse giver os mulighed for at allokere hukommelse (fra den bunke) og gratis den, mens vores program kører.

Til det, vi kommer til at bruge ny

og slet

operatører og nogle pointere.

Husk altid at frigøre hukommelse allokeret, ellers vil der være en hukommelsesfejl. Typerne skal være den samme

 flyde * ptrNewVariable = ny int.; //Wrong.

float* PtrNewVariable = nye float; //Right.

int* PtrNewVariable = nye int; //Vi har en ny int variabledelete ptrNewVariable; //Vi frigøre det 

Eksempel:.

Vi gør et spil, så vi beder spilleren, hvor mange monstre, han ønsker at kæmpe med

 nt main () {cout. int nNumber; //Gemme nummeret i en variabel cin >> nNumber; //Vi erklærer en pointer, der vil pege på en CMonster objekt. CMonster er en hypotetisk klasse. CMonster * ptrMonsters = ny CMonster [nNumber]; //For at få adgang til objekter: ptrMonsters [index] -> Fight (); //Ligesom en normal array.

//Når vi er færdige, vi frigøre hukommelse. slet [] ptrMonsters; //Husk array form af sletning. ptrMonsters = NULL; //Vi sætter det til null så det vil ikke pege på hukommelsen, der ikke er fordelt. returnere 0;}

Husk:

- Når vi bruger ny,

vi skal bruge slet

- Når vi bruger ny [],

vi skal bruge

Situation slette [].


Undgå memory leaks. 1.

 ugyldig Søg () {int * ptrNewVariable = ny int [5]; //Ny dynamisk tildelte variabel. //Vi brugte ikke slette [] ptrNewVariable. Oopss. //Slut på funktion.

Markøren er slettet og hukommelsen adressen er tabt. Hukommelsesfejl}

Situation 2.

 int * ptrNewVariable = new int.; //Markøren holder den variable address.ptrNewVariable = nye int; //Hukommelsesfejl her, markøren holder den nye variabel adresse, //men tabte den foregående, så du vil ikke være i stand til at frigøre it.delete ptrNewVariable; //Slet den sidste tildelte hukommelse, men ikke den første.


Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.