Gå til innhold

Memory leaking og opprydding


Anbefalte innlegg

Videoannonse
Annonse

Bare mineaddresser som allokeres med new eller malloc.

 

f.eks.

 

int* my_arr = new int[256]; // Dette må slettes før my_arr går ut av scope

delete[] m_arr;

 

MyClass my_object = new MyClass();

delete my_object;

 

f.eks.

 

Men hvis de er allokert på stack, er det ikke nødvendig.

 

int my_func()
{
 int my_arr[256]; // Trengs ikke å frigjøres, dette skjer automatisk når my_arr går ut av scope
} // Her går my_arr ut av scope

Lenke til kommentar

Hvis du bruker C++ er det best å bruke std::vector, std::string osv så mye som mulig. Disse håndterer minne for deg så det sparer deg for masse tid og bugs. Hvis du bruker linux/unix så burde du sjekke ut valgrind og/eller memprof. Det er to memory profilere som sier hvor programmet ditt lekker minne og mye annet, og det kommer det helt sikkert til å gjøre hvis du har et litt stort program eller er nybegynner. Ellers er det riktig det GeirGrusom sier, tenkte bare å legge til et lite ordtak: "free what you malloc, delete what you new and delete[] what you new[]". Det er viktig å ikke blande disse, f.eks delete noe du har malloc'et og sånn.

Endret av teflonpanne
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...