Veremtúlcsordulás? Miért?
Üdv! Készítettem egy aknakereső programot: [link] Minden szépen és jól működött benne, mindaddig, amíg bele nem raktam a void floodfill fv.-t. Annak az lenne a feladata, hogy az aknakeresőben ismert funkciót, az aknamentes terület automatikus felderítését biztosítsa, de valami miatt azon a részen veremtúlcsordulás van (rekurziónál ismert probléma) és ettől az egész program bedöglik. Hogy lehetne megoldani a problémát?
Eléggé sürgős lenne...Köszi előre is!
A tünet alapján az biztos, hogy a rekurziónál a kilépési feltétel valahol nem stimmel.
Anélkül, hogy hosszasan elemezném és átlátnám a C kódodat csak annyit tanácsolnék, hogy irass ki fájlba vagy a konzolra jó sok debug információt, hogy lásd, milyen paraméterekkel hívódott meg a floodfill(). (Esetleg soronkénti végrehajtással debuggolás..)
Nincs megállási feltétele a rekurziódnak. Soha nem áll le. Rakj be az elejére egy olyasmit, hogy
if (tomb[xl][yl] == atomb[xl][yl]+'0')
{ return; }
Ez így kicsit sok most nekem is hajnali 1kor, de megerősítem amit első mondott, garantáltan az egyik feltételnél lesz a hiba.
Ess neki pár kiirtással, hogy megtaláld, hol indexeled félre a tömböt.
(Vagy jobb lenne egy rendes debuggerrel nekimenni, de a kiíratás gyorsabb lesz.)
Huha, nem gondoltam volna hogy ennyi választ kapok így éjjel :D Köszi.
Esetleg utolsó válaszoló, ha rájöttél a problémára, meg tudnád osztani ? :D Próbáltam debuggolni, mindig a 115 és 116-os sornál ír segfaultot, viszont ha átrendezem a feltételeket, úgyis a 115-116-os sor lesz hibás. Kiiratni próbáltam, de nem sokmindenre jöttem rá...:/
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!