Kagee Skrevet 5. november 2008 Del Skrevet 5. november 2008 (endret) 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 6. november 2008 av Kagee Lenke til kommentar
Giddion Skrevet 5. november 2008 Del Skrevet 5. november 2008 (endret) 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 5. november 2008 av Giddion Lenke til kommentar
Kagee Skrevet 5. november 2008 Forfatter Del Skrevet 5. november 2008 Aha! Men f.eks om jeg feks lager en int * peker og senere sier at den skal peke til en new int, så må den slettes? Lenke til kommentar
Giddion Skrevet 5. november 2008 Del Skrevet 5. november 2008 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
Kagee Skrevet 5. november 2008 Forfatter Del Skrevet 5. november 2008 Aha, så jeg kan lage 100000 pekere uten problemer bare jeg ikke legger noe data i dem? Lenke til kommentar
GeirGrusom Skrevet 6. november 2008 Del Skrevet 6. november 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå