IgorCodaHollic
Artikelen: 0
Berichten: 3
Lid geworden op: zo 17 aug 2014, 18:14

StackOverflowError

 Hallo,
 
Ik ben bezig een verhuurprogramma te schrijven, echter krijg ik een StackOverflowError.
Ik begrijp dat dit moet duiden op een tekort aan geheugen, waarschijnlijk veroorzaakt door een oneindige lus of iets dergelijks.
Ik heb de code keer op keer nagelopen, maar niets kunnen ontdekken, heb ook nergens een herhaling of zo gebruikt.
Weet iemand waar in de code de fout zou kunnen zitten?? Het zou in een van de methoden moeten zijn.
De foutmelding wordt aangegeven voor de regel "FietsverhuurFrame uren = new FietsverhuurFrame()" en ook voor dezelfde regel in de GUI-klasse waar een nieuw object gemaakt wordt van de VerhuurBeheer-klasse.
Het zit m dus volgens mij in de associatie tussen de twee klassen alleen weet ik niet waar.
 
Is er iemand die de helpende hand kan bieden??
 
Alvast heel erg bedankt voor de hulp!!!
 
Bijlagen
probleem stack overflow
(27.5 KiB) 200 keer gedownload
Gebruikersavatar
Flisk
Artikelen: 0
Berichten: 1.264
Lid geworden op: vr 02 mar 2012, 14:21

Re: StackOverflowError

Kan je eens de constructor van FietsverhuurFrame geven?

Je zegt ook dat er een nieuw object van de VerhuurBeheer klasse wordt aangemaakt in FietsverhuurFrame. Dit terwijl er een nieuw object van FietverhuurFrame  wordt aangemaakt in VerhuurBeheer. Zou dit niet voor de oneindige loop zorgen?
Je leest maar niet verder want je, je voelt het begin van wanhoop.
IgorCodaHollic
Artikelen: 0
Berichten: 3
Lid geworden op: zo 17 aug 2014, 18:14

Re: StackOverflowError

Hi,
 
Dit is de constructor van FietsverhuurFrame:
 
<b>public</b> FietsverhuurFrame() {
<b>super</b>();
initialize();
mijnInit();
}
 
Bij de foutmeldingen wordt er ook melding gemaakt van de exception op de plek waar de superklasse aangeroepen wordt.
De reden dat ik in beide klassen nieuwe objecten van ieder gemaakt heb is om de verschillende objecten/methoden aan te kunnen roepen, dus in VerhuurBeheer t aanroepen van de GUI-klasse en in de GUI-klasse t aanroepen van VerhuurBeheer.
Zou het hierin zitten, dan moet ik de methoden in VerhuurBeheer op zichzelf laten werken, zonder de GUI-klasse erin te laten betrekken.
Gebruikersavatar
Flisk
Artikelen: 0
Berichten: 1.264
Lid geworden op: vr 02 mar 2012, 14:21

Re: StackOverflowError

IgorCodaHollic schreef: De reden dat ik in beide klassen nieuwe objecten van ieder gemaakt heb is om de verschillende objecten/methoden aan te kunnen roepen.
 
Is de enige reden het oproepen van methodes van die klasse(n)? Zo ja, dan zou ik de nodige methodes statisch maken, dus na public gewoon static plaatsen. Dan hoef je helemaal geen object te maken, wat dus veel handiger is. Je kan dan de gewenste methode zo gebruiken:

KlasseNaam.methodeNaam();

Het zou dus kunnen dat je een stackoverflow krijgt omdat je een object FietverhuurFrame aanmaakt dat een object VerhuurBeheer aanmaakt dat een object FietverhuurFrame aanmaakt, dat een object VerhuurBeheer aanmaakt...enz.

Ik ben niet 100% zeker, dus schiet me niet af als ik ernaast zit :D.

 
Je leest maar niet verder want je, je voelt het begin van wanhoop.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: StackOverflowError

Wat misschien ook kan helpen is om in de constructors output naar de console ofzo te schrijven. Als ze elkaar inderdaad oneindig aan het aanroepen zijn, dan zou je dat zo kunnen zien.
Merlion
Artikelen: 0
Berichten: 77
Lid geworden op: di 05 mar 2013, 07:01

Re: StackOverflowError

Ik zie hier verschillende dingen
 
IgorCodaHollic schreef:  
Bij de foutmeldingen wordt er ook melding gemaakt van de exception op de plek waar de superklasse aangeroepen wordt.
De reden dat ik in beide klassen nieuwe objecten van ieder gemaakt heb is om de verschillende objecten/methoden aan te kunnen roepen, dus in VerhuurBeheer t aanroepen van de GUI-klasse en in de GUI-klasse t aanroepen van VerhuurBeheer.
1) Dit lijkt mij recursief wat zonder stopvoorwaarde fataal is. Je kan dit eenvoudig testen door debuginformatie naar een console te printen.
 
2) Een new zonder bijbehorende delete is een memory leak, wat fataal kan zijn in lussen. 
 
3) Waarom zijn deze member-variabelen static? Dit lijkt mij erg onwaarschijnlijk in deze toepassing. 
 
 
IgorCodaHollic
Artikelen: 0
Berichten: 3
Lid geworden op: zo 17 aug 2014, 18:14

Re: StackOverflowError

Klopt inderdaad.
De stackoverflow ontstond doordat er in beide klassen nieuwe objecten van elkaar gemaakt werden. Resulteerde in de oneindige lus.
Weer wat geleerd dus.
 
In ieder geval bedankt voor de diverse oplossingen!!
Merlion
Artikelen: 0
Berichten: 77
Lid geworden op: di 05 mar 2013, 07:01

Re: StackOverflowError

Ik zie net (met enige schaamte) dat dit Java ipv C++ is. Opmerking 2 in mijn vorige post is dus niet van toepassing. 

Terug naar “Informatica en programmeren”