Avatar billede komp Nybegynder
22. november 2001 - 13:41 Der er 11 kommentarer og
1 løsning

Array i heaplager

Hej Eksperter

Jeg har lige et spørgsmål, som jeg gerne vil have til diskutere. Hvis man opretter et array sådan her:

int *y;
y=new int[10];

Får man så et array, hvor elementerne ligger i forlængelse af hinanden eller er det en hægtet liste man får hvor []-operatoren er overloadet?

Alle bøger jeg har læst siger det første, men min lærer siger det andet. Hvad mener I?

Jeg har ikke givet nogle point, da det bare er oplæg til diskussion!
Avatar billede disky Nybegynder
22. november 2001 - 13:44 #1
så ved din lærer ikke hvad han snakker om

et array er altid fortløbende.
Avatar billede disky Nybegynder
22. november 2001 - 13:46 #2
p.s. måske mener du selv det er en diskussion, men det er nu helt tydeligt et spørgsmål du skal have hjælp til.
Avatar billede jpk Nybegynder
22. november 2001 - 13:58 #3
Et array ligger fortløbende i memory!
Avatar billede komp Nybegynder
22. november 2001 - 17:26 #4
Det er fint nok at I siger et array altid er fortløbende(jeg er af samme mening), men spørgsmålet er om I kan bevise det??? Er der nogle der kan bevise at Compileren ikke har overloadet []-operatoren?
Avatar billede komp Nybegynder
22. november 2001 - 17:27 #5
disky-> Din kommentar vælger jeg at overhøre, så længe du ikke har noget konstruktivt at sige!
Avatar billede jpk Nybegynder
22. november 2001 - 17:51 #6
Fx kan du anvende funktionen sizeof til at få den mængde hukommelse der er fra start til slut af arrayet. Mængden ville naturligvis ikke passe hvis det fx var en hægtet liste, da der ville anvendes mere memory hertil! (+ der ville sandsynligvis være andre objekter imellem...)

En fordel ved arrays er netop at der er direkte opslag (hurtig da der ikke er nogle performance hits ved at løbe gennem en liste).
Skal man fx have fat i 3. element, tager man blot arrayets begyndelse (i mem) og lægger 2*indholdstypens størrelse til.

Endelig kan du jo prøve i en debugger som VC++ at lave et array, fylde det op med noget genkendeligt og så angive adresser i memory, som du vil undersøge.
Du vil se at arrayets elementer ligger i forlængelse af hinanden!
Avatar billede jpk Nybegynder
22. november 2001 - 17:52 #7
hovsa...
hurtig da der ikke er nogle performance hits ved at løbe gennem en liste
skulle have været
hurtig da der ikke er nogle performance hits ved at løbe gennem det, som ved en liste
Avatar billede disky Nybegynder
22. november 2001 - 18:37 #8
komp:

Hahaha

Jeg siger jo sandheden.

Tro mig det din lærer siger er noget ævl.
Jeg har arbejdet længe nok med programmering på prof. niveau til at have baggrund nok til at sige den slag.

Men pyt hvis du ikke vil høre sandheden så lad være med at spørge her på eksperten.

Men hvorfor spilder vi overhovedet vores tid på dig, du mener jo tydeligt vis at vores svar ikke er noget værd.
Avatar billede komp Nybegynder
22. november 2001 - 20:11 #9
Tak for det fornuftige svar jpk. Det var noget jeg kunne bruge.

disky-> Jeg mener helt sikkert at Jpk\'s svar er noget værd, da han kommer med klare beviser for hans påstand.
Avatar billede disky Nybegynder
23. november 2001 - 09:01 #10
jeg gav dig et korrekt svar, og siden du ikke mente vores viden var point værd gad jeg ikke bruge tid på at forklare hvorfor.

Alle der kender bare lidt til C programmering ved at sådanne er tingene bare.
Avatar billede komp Nybegynder
23. november 2001 - 17:41 #11
Du gav en påstand! ikke et svar.
Avatar billede jpk Nybegynder
23. november 2001 - 22:29 #12
=> komp
Jeg mener disky har ret i at du burde have sat point på, da der ikke har foregået megen diskurion her; du har spurgt vi har svaret!
Havde det været en reel diskution, havde du måske selv deltaget mere aktivt...

Nå, men lidt dokumentation fra MSDN:
A search algorithm using array structures usually runs faster than a search algorithm using dynamically allocated linked lists, because an array is contiguous in memory and is likely to reside on a few pages of virtual memory; it will most probably reside in RAM

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
Kurser inden for grundlæggende programmering

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