Gå til innhold

Problemer med pekere


Anbefalte innlegg

Windows, Linux eller OS X? Hvilken gcc-versjon? Hvilke kompilatorflagg?

$ gcc --version
gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2

Kompilert uten noen som helst ekstra flagg på kompileringa. Men får samme oppførsel med både o2 og o3.

 

Men oppførselen er nok forskjellig grunnet ulike versjoner av GCC. (gcc garanterer ingenting om hvordan den legger ting på stacken slik jeg har forstått det). Dermed kan det være at eldre / nyere versjoner av GCC vil legge til i en annen rekkefølge på stacken. Og som nevnt, om array A og B bytter plass så vil du ende opp med at du i stede for å printe ut verdier som er i det andre arrayet printer ut ting som ligger utenfor allokert område på stacken.

Endret av etse
Lenke til kommentar
Videoannonse
Annonse

Problemet er her:

for(i=0; i<MAX; i++)
	{
			*q++ = *p++;

 

Ved slutten peker q i enden av bufferen på ugyldig minneadresse. Den tolker inneholdet i i variabelen som peker til en ugyldig adresse, som igjen gir deg et bisarr nummer.

Allerede påpekt og forsøkt forklart flere ganger i tråden. Samtidig som hvorfor det "virket" på min maskin. (Det pekte på feil array grunnet hvordan ting ble lagt på stacken).

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...