Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Pysyvä access violation

KoodiNoppa [04.08.2008 22:20:56]

#

Yritin tänään saada vanhan pelimoottorin main-funktiota siihen kuntoon, että pelimoottoria voisi testata. Kun olin poistanut kaiken turhan ja jäljellä oli enää pelimoottorin alustus, testasin ohjelmaa. Ohjelma kaatui ennen kuin alustus oli loppunut.
Kun olin jonkin aikaa yrittänyt saada ohjelmaa toimimaan, vaihdoin lopulta koko koodin toisen, toimivan ohjelman koodiin. Edelleenkään ei toiminut, vaan ohjelma kaatui. Debug ilmoitti "An Access violation (segmentation fault) raised in your program". Sama viesti tuli myös tyhjällä main-funktiolla, ilman mitään kirjastoja. Mistä tämä access violation johtuu?

Grez [04.08.2008 22:56:46]

#

Access violation johtuu siitä, että ohjelmasi yrittää lukea tai kirjoittaa jonkin toisen ohjelman käytössä olevaa muistiosoitetta. Tyypillisesti virhe johtuu alustamattomasta osoittimesta tai normaalin luvun käyttämisestä vahingossa osoittimena tai yleisesti erilaisista osoitinsekoiluista.

maz [06.08.2008 11:55:49]

#

Suosittelisin jonkin debuggerin käyttöä. Mikäli koodaat linuxille, gdb on ehdoton valinta. Jos taas windowsille, niin olen kuullut positiivista palautetta visual 2005:n debuggerista. (DEV-CPP windows IDE muuten käyttää MinGW porttia gcc kääntäjästä ja gdb:stä. Jos käytät DEV-CPP ideä, kokeile kääntää softa komentoriviltä gcc:llä, -ggdb flagin kanssa. (-ggdb generoi debuggi-informaation exeen) (
C koodi: gcc -Wall -ggdb -o ajettava_ohjelma.exe source1.c source2.c
C++ koodi: g++ -Wall -ggdb -o ajettava_ohjelma.exe source1.cpp source2.cpp )
ja mahdolliset inculoitavat lisälibit tuonne rimpsun perään -l etuliitteellä sekä libbien polut -I etuliitteellä.

Oletan siis että tässä on C/C++ koodista kyse.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta