/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Heapen vs stakken ?
Fra : HHD


Dato : 27-09-01 18:42

Er der en der kan give en kort, dansk forklaring på
- stakken
- heapen
samt hvad forskellen er ?

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Kent Friis (27-09-2001)
Kommentar
Fra : Kent Friis


Dato : 27-09-01 18:49

Den Thu, 27 Sep 2001 17:42:06 GMT skrev HHD:
>Er der en der kan give en kort, dansk forklaring på
>- stakken
>- heapen
>samt hvad forskellen er ?

Det er måske lektier til imorgen?

Mvh
Kent
--
8:16pm up 2:37, 1 user, load average: 101.21, 95.46, 55.85
164 processes: 62 sleeping, 102 running, 0 zombie, 0 stopped

With XMMS tugging along nicely, playing Vivaldi...

Soeren Dalby (27-09-2001)
Kommentar
Fra : Soeren Dalby


Dato : 27-09-01 20:05

Det er ikke nemt at komme med en meget kort forklaring på disse, men jeg vil
forsøge

Stakken har sit navn af, at der er tale om et dataområde, hvor data kun kan
placeres og hentes i en bestemt rækkefølge kaldet: sidste ind, første ud.
Det vil sige, at hvis du har lagt værdierne

A1
A2
A3

ind på stakken, vil de blive hentet som

A3
A2
A1

Det er smart til at lagre data for procedurekald ind på denne måde. Når en
procedure kaldes, ligges parametrene ind på stakken. Når proceduren
afsluttes, fjernes disse parametre fra stakken og når den kaldende procedure
afsluttes, fjernes disse osv.

Rent programmæssigt er der tale om et præallokeret dataområde, hvor en peger
afgører hvor data kan ligges ind og data fjernes ved at flytte pegeren
tilbage på stakken.

Heap'en er et dataområde, hvor dataområder kan allokeres. Heapmanageren er
derfor et memory booking system, hvor data kan reserveres når det skal
bruges og reservationen skal ligeledes fjernes, når hukommelsen ikke længere
skal bruges. I sprog som C, C++ osv. gøres dette af applikationsprogrammøren
(malloc/free, new/delete). I Java skal applikationsprogrammøren kun
reservere hukommelsen, da Java har mekanismer til at detektere om
hukommelsen stadig er i brug (refereres til).

Håber at du blev lidt klogere.


--
Best regards

Soeren Dalby
www.dalbydata.dk


"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:9ovopm$2ln$1@sunsite.dk...
> Den Thu, 27 Sep 2001 17:42:06 GMT skrev HHD:
> >Er der en der kan give en kort, dansk forklaring på
> >- stakken
> >- heapen
> >samt hvad forskellen er ?
>
> Det er måske lektier til imorgen?
>
> Mvh
> Kent
> --
> 8:16pm up 2:37, 1 user, load average: 101.21, 95.46, 55.85
> 164 processes: 62 sleeping, 102 running, 0 zombie, 0 stopped
>
> With XMMS tugging along nicely, playing Vivaldi...



Jens Axel Søgaard (27-09-2001)
Kommentar
Fra : Jens Axel Søgaard


Dato : 27-09-01 21:57

[Snip forklaring]

Sprogligt:

Stakken kaldes en stak fordi den er en stak.
Heapen kaldes en heap fordi den er en bunke.

--
Jens Axel Søgaard




HHD (01-10-2001)
Kommentar
Fra : HHD


Dato : 01-10-01 11:12

Tak for svaret Soeren Dalby.
                        

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Soeren Dalby (02-10-2001)
Kommentar
Fra : Soeren Dalby


Dato : 02-10-01 14:01

Det var så lidt - håber at du kunne bruge det


--
Best regards

Soeren Dalby
www.dalbydata.dk


"HHD" <HHD.news@kandu.dk> wrote in message
news:mfXt7.3$lB3.237@news000.worldonline.dk...
> Tak for svaret Soeren Dalby.
>
>
> --
> Leveret af:
> http://www.kandu.dk/
> "Vejen til en hurtig løsning"
>



Soeren Dalby (27-09-2001)
Kommentar
Fra : Soeren Dalby


Dato : 27-09-01 20:29

Det er ikke nemt at komme med en meget kort forklaring på disse, men jeg vil
forsøge

Stakken har sit navn af, at der er tale om et dataområde, hvor data kun kan
placeres og hentes i en bestemt rækkefølge kaldet: sidste ind, første ud.
Det vil sige, at hvis du har lagt værdierne

A1
A2
A3

ind på stakken, vil de blive hentet som

A3
A2
A1

Det er smart til at lagre data for procedurekald ind på denne måde. Når en
procedure kaldes, ligges parametrene ind på stakken. Når proceduren
afsluttes, fjernes disse parametre fra stakken og når den kaldende procedure
afsluttes, fjernes disse osv.

Rent programmæssigt er der tale om et præallokeret dataområde, hvor en peger
afgører hvor data kan ligges ind og data fjernes ved at flytte pegeren
tilbage på stakken.

Heap'en er et dataområde, hvor dataområder kan allokeres. Heapmanageren er
derfor et memory booking system, hvor data kan reserveres når det skal
bruges og reservationen skal ligeledes fjernes, når hukommelsen ikke længere
skal bruges. I sprog som C, C++ osv. gøres dette af applikationsprogrammøren
(malloc/free, new/delete). I Java skal applikationsprogrammøren kun
reservere hukommelsen, da Java har mekanismer til at detektere om
hukommelsen stadig er i brug (refereres til).

Håber at du blev lidt klogere.


--
Best regards

Soeren Dalby
www.dalbydata.dk
"HHD" <HHD.news@kandu.dk> wrote in message
news:qtJs7.703$Mk2.64625@news000.worldonline.dk...
> Er der en der kan give en kort, dansk forklaring på
> - stakken
> - heapen
> samt hvad forskellen er ?
>
> --
> Leveret af:
> http://www.kandu.dk/
> "Vejen til en hurtig løsning"
>





Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste