Den Fri, 09 Mar 2001 19:57:43 GMT skrev Jesper FA:
>Rasmus Meldgaard wrote:
>
>>> int *a;
>>> a = (int *) malloc(40*sizeof(int));
>>>
>>> Så er a nu et "array" med plads til 40 int?
>>
>> Ja det har du helt ret i.
>
>Fint. Jeg synes nemmeligt ikke rigtigt jeg kunne kontrollere om jeg nu
>havde fået det eller det bare var noget andet tilfældigt data jeg tilgik.
>
>Hvor stor er sådanne en pointer egentligt.. Jeg undre mig nemmeligt lidt
>over at hvis jeg udskriver værdien af den, så er det altid den samme for
>det samme program.
Du kan ikke gå ud fra at den er den samme, men den vil ofte være det
samme, indtil du ændrer i programmet, eller bruger en anden compiler (på
nogen systemer har det også betydning hvilke andre programmer der er
startet. Så gå ud fra at den er ukendt.
>Sådanne en pointer er den abselut i hukommelsen eller er den relativ i
>noget virtuelt noget?
Det afhænger af OS'et.
>>> Det skal være
>>> free(a)
>>> fx. free(a+1) er forkert? Dvs. man skal bruge den præcist pointer man fik
>>> tilbage ved malloc ikke bare en der ligger et sted i det område man fik?
>> Det er meget vigtigt at den punter, du bruger free, er den du får fra
>> malloc.
>
>OK. Det må man jo så huske at huske på.
>
>>> int *asdf() {}
>>>
>>> betyder at asdf returnere en pointer til en int?
>>
>> Ja, husk at allokere plads til den f.eks:
>> return (int *) malloc(40*sizeof(int));)
>> og at den skal free's igen.
>
>Hvor meget ryder OS'et normalt op efter et program når det terminere?
>
>Bliver alloceret hukommelse få frigivet, eller er det tabt indtil genstart.
Afhænger af OS'et. På Linux kan du gå ud fra at alt bliver ryddet op.
Under DOS/windows kan man nogengange få en opfattelse af at alt er
tabt indtil genstart.
Men gør det til en vane altid at deallokere hukommelse, og lukke filer.
Programmet bliver mere korrekt, du får mere øvelse i at programmere,
og der er mindre chance for at det ender med en blå skærm, den dag
du flytter dit program over på en windowsmaskine.
>>> Ps. jeg sidder på en Linux maskine, men det burde vel ikke betyde noget.
>> nej det gør det ikke.
>
>Mht. ovenstående kunne det vel betyde noget.
Ja, man kan tillade sig at gå ud fra at systemet virker.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr - sidste billede: house.png