mortefos Skrevet 15. november 2007 Del Skrevet 15. november 2007 (endret) Har en fuksjon (i c) som tar inn en peker til en global strukt. Når jeg prøver og tilordne lokale variabler av elementene i strukten så forandres plutselig adressen til pekeren på enkelte steder i koden. Adresse forandringen ser ut til og skje på samme plass hver gang, men om jeg tar bort linjene fra koden så skjer de bare andre plasser i stedet. int Funk(struktPtr *ptr) { int a = ptr->a; int b = ptr->b; int c = ptr->c; . . . return something } a = går fint, men etter b= så forandres adressen til ptr plutselig, så c= gir feil. Om jeg stopper i debuggeren etter b= og så forandrer adressen til det den var før den linja så gir c= rett igjen. hva kan gjøre dette? Endret 19. november 2007 av mortefos Lenke til kommentar
Giddion Skrevet 15. november 2007 Del Skrevet 15. november 2007 Jeg ville tro at du har buffer-overrun et eller annet sted i koden din. Jeg har vært borti veldig like situasjoner som har vist seg å komme fra buffer-overrun et helt annet sted i koden. Prøv å kutt ut deler av programmet helt til det fungerer (håper det ikke er store programmet ) Hvis du ikke kompilerer med debug kode så gjør det. Ellers så får du ha lykke til, buffer-overrun kan være vanskelig å finne. Lenke til kommentar
Mr.Garibaldi Skrevet 16. november 2007 Del Skrevet 16. november 2007 Jeg ville tro at du har buffer-overrun et eller annet sted i koden din.Jeg har vært borti veldig like situasjoner som har vist seg å komme fra buffer-overrun et helt annet sted i koden. Høres ut som en minnelekasje ett sted ja, noe som kan være helt "¤%¤#&%&/¤#"¤# å finne manuellt. Hvis du er på linux er Valgrind ett godt debugging program som hjelper deg med å finne hvilke variabler du allokerer minne til, men glemmer å slette (eller tilordner for mye data til). Om du er på windows så er jo Visual Studio (Visual C++ Express er gratis) veldig bra (ihvertfall) til debugging og gir utrolig mye informasjon om hva som skjer i programmet ditt. Lenke til kommentar
mortefos Skrevet 19. november 2007 Forfatter Del Skrevet 19. november 2007 (endret) takker for tipsene flytta noen variabel deklareringer opp i toppen av funksjon, så fungerte det etterpå Endret 19. november 2007 av mortefos Lenke til kommentar
Giddion Skrevet 20. november 2007 Del Skrevet 20. november 2007 takker for tipsene flytta noen variabel deklareringer opp i toppen av funksjon, så fungerte det etterpå Med mindre du fant en feil i koden din så er det ikke sikkert at problemet er løst, men du har fjernet symtomene. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå