Gå til innhold

Memory leaking og opprydding


Anbefalte innlegg

Skrevet

Hei!

 

Hva trenger jeg å tenke på når det gjelder memory leaking? Når må jeg rydde opp etter meg? Må jeg rydde opp etter alle variabler og objekter jeg lager? (osv...)

Videoannonse
Annonse
Skrevet

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

Skrevet (endret)

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

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...