08. marts 2003 - 10:17Der er
9 kommentarer og 2 løsninger
Hvad er forskelle på at man bruger new og ikke bruger den???
Jeg mener at når man f.eks. skriver Konto k = new Konto() i c++ så ligges k på stakken og selve konto-objektet på heapen. Er dette korekt? Hvad nu hvis man kun skriver Konto k; hvordan ser det så ud nede i heapen og stakken?
mufoxe >> Ehhh, det er jeg ikke enig med dig i. Når man skriver: Konto k = new Konto(); Allokeres memory til et Konto objekt på heapen. Memory deallokeres ikke før der kaldes: delete k;
Når man skriver: Konto k; Allokeres memory til et Konto objekt på stakken. Memory deallokeres når k går uden for scope.
Skal lige hører om jeg har forstået det ret. (Konto k;) nu er der allokeret plads på stakken til kontoen. (k.indsaet(100)); nu er konto-objektet oprettet på den allokerede plads på stakken, og 100kr. er blevet indsat. Og dette kan jeg også bare gøre ved at sige: (Konto k(100)); Er dette forstået rigtigt :)
Jeg bør nok lige sige at jeg har forstået (Konto *k = new Konto();) Men har også set Konto k; og så k.indsaet(100); og det er det som jeg ikke kan gennemskue på stack/pointer niveau.
Pointerne er en adresse og kan være global, heap eller stack.
Globale data: Generelt data der er defineret uden for funktioner/metoder. Frigives først ved programmets afslutning.
Heap: Her allockeres generelt med new, new kan dog være defineret til noget andet da new kan overloades. Frigives af programmet, herunder af destructore der destruere objecter det tidligere har allockeret fra heap med new.
Stack:Alle data der defineres i funktioner/metoder, disse frigives når fnktionen / metoden forlades og diverse destructore kaldes som kan frigive på heap.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.