Gå til innhold

[Løst]Pekere (elns) til objekter - slettes? [løst]


Anbefalte innlegg

Hei! :!: I c++-kurset mitt er vi ikke kommet til pekere og sånt enda, men jeg trengte en til en oppgave vi hadde (mindre kode).

 

Dette er en del av en member function som skal finne antall dager mellom 2 datoer. Siden jeg ikke vet hvilken som er først, bruker jeg denne måten:

(tt er et Tid (aar, maaned, dag) argument til funksjonen, aar etc. er de private variablene til det gjeldene objectet)

Tid sent, tidlig;
if (tt.aar < aar) {
tidlig = tt;
sent = *this;
} else /* tt.aar > aar */ {
tidlig = *this;
sent = tt;
}
/* kode som jobber på tidlig og sent */

 

Må jeg slette eller fjerne tidlig &/ sent på slutten av denne funksjonen nå? Jeg returnerer en int med antall dager mellom datoene.

Endret av Kagee
Lenke til kommentar
Videoannonse
Annonse

Nei du trenger ikke det siden tidlig og sent ikke er dynamisk allokert (se malloc © og/eller new (c++)).

Koden vi automatisk fjerne sent og tidlig når programmet er ferdig med variablen sitt scope (dvs. funksjonen her).

 

et scope blir definert av { og }

 

Håper det hjalp

Endret av Giddion
Lenke til kommentar

Jeg tror du har skjønt det, men for å være på den sikre siden skriver jeg litt til :)

 

Det stemmer som du skriver at du må slette dataene pekeren peker til i din post.

 

Du sletter ikke selve pekeren, men dataene pekeren peker til.

Når du bruker new vil pekeren peke til dataene som skal slettes.

 

Du må ikke slette pekeren forde den en gang i fremtiden vil peke til en dynamisk allokert int en gang i fremtiden, men det at det gjør det.

 

eks.

int* p1 = new int;

int* p2 = p1;

 

her trenger du bare slette en av pekerene og det er det samme hvilke.

Lenke til kommentar

Bare du ikke allokerer minneområder til dem ja

 

Grunnen til at en bruker pekere er fordi en egentlig bare kan allokere data på stacken (som er begrenset i størrelse) for å løse dette, så bruker en malloc eller new for å allokere et minneområde på heap, og deretter allokerer en pekere på stacken som kan peke til områder på heap som normalt sett ikke er tilgjengelig.

 

Da må en også huske å frigjøre områdene på heap fordi C++ har kun "kontroll" på det som ligger på stacken.

 

Hvordan stacken brukes defineres av hvordan programmet ditt er bygget opp, en variabel vil frigjøres dersom den forsvinner ut av scope fordi stack pekeren vil bli resatt når den kommer til en } normal sett.

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