etse Skrevet 30. november 2012 Del Skrevet 30. november 2012 (endret) 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 30. november 2012 av etse Lenke til kommentar
Lycantrophe Skrevet 30. november 2012 Del Skrevet 30. november 2012 Jeg har 4.7.2, så det kan fint være det. Poenget er uansett, som du så pent sier, at C ikke garanterer noe og at det kun er tilfeldig at det virker. Lenke til kommentar
r2d290 Skrevet 30. november 2012 Forfatter Del Skrevet 30. november 2012 Tusen takk for svært god og dyptgående forklaringer Henger mye mer med på hva som ligger bak, nå. Dette var til stor hjelp! Lenke til kommentar
LonelyMan Skrevet 3. desember 2012 Del Skrevet 3. desember 2012 (endret) 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. Endret 3. desember 2012 av LonelyMan Lenke til kommentar
etse Skrevet 3. desember 2012 Del Skrevet 3. desember 2012 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
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å