29. november 2004 - 15:20Der er
9 kommentarer og 1 løsning
'Lagersegmentfejl' i forbindelse med pointere
Jeg sidder og hygger mig med Kernighan & Ritchie's fremragende bog om C, og jeg er kommet til kapitlet om pointere - nærmere bestemt er jeg kommet til det afsnit om pointere og tekststrenge.
Til dette afsnit er der en opgave, som går ud på at lave en funktion, der konkatenerer to strenge, og det skal være vha. pointere. Kildekoden har jeg kopieret ind her:
Når jeg prøver at køre programmet, får jeg at vide, at der er en lagersegmentfejl, og jeg har fundet ud af, at det er i forbindelse med while-løkken i cat(), at den opstår.
Mit problem er, at jeg er løbet tør for ideer til, hvordan jeg slipper af med den fejl. Specielt fordi bogen viser den copy()-funktion, jeg har, som et eksempel.
Nej, det er ikke specielt meget pænere. Ihvertfald ikke når det er sådan et lille eksempel. Desuden er jeg heller ikke kommet til malloc endnu, så det venter jeg lige lidt med ;)
I alle nyere C compilere: ja. Muligvis kan man ændre det ved en compile option.
I gamle dage var det ikke tilfældet.
Men selvom den var i en ReadWrite sektion, så var det stadig et problem at skrive ud over afslutningen af det.
Husk på at I Java for du en exception, hvis du bruger et out of range index. Men i C kan du risikere bare at overskrive noget tilfældigt memory uden at få fejl (og så får man en mystisk fejl et helt andet sted i koden).
Det skal jeg prøve at huske! Jeg skal vist lige vænne mig til, at der ikke er nogen, der holder mig i hånden og sørger for, at jeg ikke lave fejl i C, som der er i Java ;)
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.