Avatar billede lifehacker Nybegynder
26. august 2008 - 21:15 Der er 6 kommentarer

Pointere & Fejl

Nogen som kan komme med forslag til typiske fejl relateret til brug af pointers?
Det eneste jeg kan komme på er at man kan ende med at skrive et sted I hukommelsen man ikke må.

Hvad er der ellers af fejl?

Jeg kender nemlig ikke så meget til pointere.
Avatar billede arne_v Ekspert
26. august 2008 - 21:19 #1
returnere pointer til lokal variabel:

char *foobar()
{
    char a[] = "bla bla";
    return a;
}
Avatar billede arne_v Ekspert
26. august 2008 - 21:20 #2
en class som har pointer fields men ingen copy constructor og = operator
Avatar billede arne_v Ekspert
26. august 2008 - 21:21 #3
glemme at teste for NULL:

char *p = strstr(s, "foobar");
*p = '\0';
Avatar billede kenneth_gorking Nybegynder
26. august 2008 - 21:45 #4
Skrive før/efter en gyldig hukommelseaddresse.

Glemme at initialisere en pointer, så den peger på tilfældige steder i hukommelsen.
Avatar billede lifehacker Nybegynder
26. august 2008 - 21:46 #5
Ok, jeg ledte efter mere simple svar, hehe...

Jeg har ikke rigtig styr på pointere og funktioner. Er foobar funktionen som referere til arrayet a[] eller hvordan? Er på bare bund, og ville påskønne hvis du kunne forklare lidt mere omkring dette stykke kode. :-)

char *foobar()
{
    char a[] = "bla bla";
    return a;
}
Avatar billede arne_v Ekspert
26. august 2008 - 22:00 #6
foobar returnerer en pointer som peger paa ane lokal variabel - og da lokale variable
deallokeres ved funktions afslutning saa peger den paa noget tilfaeldigt memory
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