Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[C++] Jump to invalid adress?

phaas
2 antwoorden
  • Ik krijg van memcheck <aka valgrind> devolgende fout, gevolgd door een segfault:
    [code:1:6493f1a996]
    DynACM: Library loaded succesfully.
    ==2687==
    ==2687== Jump to the invalid address stated on the next line
    ==2687== at 0x0: ???
    ==2687== by 0x40235A30: EducatComponentManager::newComponent(QString const&) (in /home/barry/program/educat/educat-1.1/src/libeducat/libeducat.so)
    ==2687== by 0x4407BD6C: ModuleBrowser::openModuleWindow(EducatModule*) (in /home/barry/program/educat/educat-1.1/src/lib/ui.so)
    ==2687== by 0x4407B8DE: ModuleBrowser::loadModule(QString const&) (in /home/barry/program/educat/educat-1.1/src/lib/ui.so)
    ==2687== Address 0x0 is not stack'd, malloc'd or free'd
    Segmentation fault
    [/code:1:6493f1a996]

    Wat houdt een 'Jump to invalid adress' precies in?
    er staat 'at 0x0: ???' inplaats van een functie naam, nou weet ik dus nog niet waar ik moet zoeken
  • Dat je programma naar een plek toe wil waar het niet naar toe mag.
    NULL (0x0) is bij mijn weten altijd een adres waar je niet naar toe mag (en daar lijkt je programma naar toe te willen).
    Jumps worden o.a. gebruikt in switch-statements, in if-then-else constructies en bij goto.
    Een aantal mogelijke oorzaken:
    * niet ge-initialiseerde variabele (evt functie pointer hoewel dat geen jump zou zijn)
    * een buffer-overflow waardoor je programma wordt overschreven
    * een out-of-range waarde voor een switch-statement

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.