Zolo Skrevet 16. desember 2006 Skrevet 16. desember 2006 hvordan kan en kopiere datene som en peker peker på. har: unsigned char* a; unsigned char* b; unsigned char* c; a = b; //forandrer sett peker c til å peke et annet sted. //så b = c; Men dette gir samme resultat til a og b, så trenger å kopiere det som peker c peker på over i peker a. (peker c går gjennom en avi film) og treng frame n og n+1 for å gjøre videre beregninger.
Giddion Skrevet 16. desember 2006 Skrevet 16. desember 2006 hmm.. for å kopiere det en peker peker til så må du int TallA = 45; int TallB = 0; int* PekerA = &TallA; //peker til TallA int* PekerB = &TallB; //peker til TallB TallB = *PekerA; //nå har TallB samme verdi som PekerA peker til //PekerB peker nå til en verdi med verdi 45. ting blir litt mer komplisert når vi snakker om andre ting som char array memcpy burde du kikke på. Legg merke til at hvis du oppgir større datasize enn dest bufferen kan dette gi bufferoverrun feil som kan være ekstremt vanskelig å finne. God jul og lykke til
Zolo Skrevet 17. desember 2006 Forfatter Skrevet 17. desember 2006 prøver: memcpy(tee, data, sizeof(data)); der tee og data er (unsigned char*) det kompilerer, men krasjer under kjøring. Er det problemer med visual studio 2003?
Giddion Skrevet 18. desember 2006 Skrevet 18. desember 2006 tee må være en array som er like stor som sizeof(data) eks tee = new char[sizeof(data)]; Hvis du ikke gjør dette vil programmet prøve å skrive til minne området som tee peker til og det vil ikke gå siden OSet hindrer at du får skrive til områder som ikke er programmet sitt.
Zolo Skrevet 18. desember 2006 Forfatter Skrevet 18. desember 2006 Har endelig fått det til å "kopiere", men tee forandrer seg også når data forandrer seg. D.v.s: gjør memcpy deretter forandre på data, men dette påvirker også tee som skulle være en kopi av data.
Giddion Skrevet 18. desember 2006 Skrevet 18. desember 2006 tee og data peker vel til samme området. Du kopierer vel ikke til og fra samme området vel? Bare bruk debuggeren så finner du ut av det.
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å