Avatar billede scorp-d Nybegynder
26. maj 2008 - 17:26 Der er 2 kommentarer og
1 løsning

Forskel på heap, stack og data-segment !

Halløjsa...

Jeg har fået af vide at Statiske variable er de hurtigste at tilgå, fordi de ligger i Data-segmentet.

Men når jeg så søger på nettet efter mere information ser det ud til at folk ikke helt er enige om hvor statiske variable bliver placeret.

Er der nogen som kan af/be-kræfte følgende:

Stack - indeholder hvad der bliver afviklet i vores kode(hvad der er blevet kaldt)

Heap - holder styr på objekter.

Data-segment - indeholder statiske variable, er den hurtigste form.


Har godt set at der er indlæg med det her på eksperten men syndes ikke rigtig at de kan komme med en forklaring.


Har nemlig desværre brug for en kort definition, som også forklare hvor de ligger rent fysisk(ram, pagefil osv.), og hvorfor de har forskellige hastigheder.

På forhånd tak
Scorp-D
Avatar billede driis Nybegynder
26. maj 2008 - 18:04 #1
Statiske variable bliver allokeret på heap'en i C#.

Heap = En blok memory, som CLR'en administrerer (allokering, garbage collection), som indeholder dine objekter.

Stack = Privat memory for den tråd der afvikles. Bruges til at gemme value typer erklæret i metoder, samt at overføre parametre og returadresser til de metoder, der kaldes.

Hvis du erklærer en reference type, gemmes selve objektet på heap'en, og på stacken har du en reference til den (deraf "reference type")

Hvis du erklærer en value type (arver fra System.ValueTypem, Structs og de simple datatyper, int, float osv.), gemmes værdien på stacken.
Avatar billede driis Nybegynder
26. maj 2008 - 18:04 #2
Avatar billede kodehoved Nybegynder
26. maj 2008 - 21:50 #3
driis siger en masse korrekt, men jeg vil lige tilføje, at værdityper kun opbevares på stakken, såfremt de ikke er en del af en referencetype. I såfald ligger de med "resten" af instansen på heapen.

En int i en klasse vil således blive allokeret på heapen sammen med instansen af klassen.

Jeg har skrevet en del om dette på min blog: http://kodehoved.dk. Her kan du også finde slides fra min Microsoft TechTalk om dette.

mvh
Brian
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester