Letní akce PHP týden
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Kubas129
Člen
Avatar
Kubas129:16.12.2018 14:56

Ahoj,
vím, že bych to asi sem neměl psát ale už nevím co mám s tím dělat :(
mám za úkol vytvořit funkci, která bude zarovnávat text. Tu jsem vytvořil, když jsem jí dal do progtestu, tak jsem měl u dat podle ukázky 100% ale pak u testu mezních hodnot mi progtest vypsal chybovou hlášku: **Segmentation fault/Bus error/Memory limit exceeded/Stack limit exceeded ** a program spadl.Což jestli chápu správně je chyba s dynamicky alokovanou pamětí ale já tam žádnou chybu, kde bych překročil indexaci pole nevidím :(
Můžu prosím poprosit někoho kdo tomu rozumí, aby mě poučil, kde mám chybu? díky moc.
http://leteckaposta.cz/385919540

 
Odpovědět 16.12.2018 14:56
Avatar
Simona Kurňavová:16.12.2018 16:03

Ahoj,
Hláška **Segmentation fault/Bus error/Memory limit exceeded/Stack limit exceeded ** nemusí znamenať len prístup na neplatný index. Segmantation fault dostaneš pri zlom prístupe do pamäte (napr. ten neplatný index), Memory limi exceeded znamená, že tvoj program potrebuje viac pamäte než má povolené, Bus error je prístup k pamäti ktorá neexistuje a Stack limit exceeded znamená že si presiahol limit systémového zásobníka (častý problém pri rekurzívnych algoritmoch).

Progtest nevie rozlišovať medzi týmito errormi, takže si to musíš odskúšať sám a pokúsiť sa reprodukovať ten error pod Valgrindom (ktorý ti vie vypísať aj riadok na ktorom je chyba).

Čo sa týka zdrojového kódu, naozaj by som neodporúčala to hádzať volne na internet, keďže sa môže veľmi jednoducho stať že ti odovzdaný zdroják kvôli tomuto vyhlásia za duplicitu. Ale vôbec by ma prístup na nealokované miesto v pamäti neprekvapil keďže máš veľmi zvláštny spôsob iterácie poľa a využívania ukazateľov.

Takže ideálny spôsob ako nájsť chybu je testovanie pod rôznymi dátami a následné spustenie pod Valgrindom, prípadne nejaké výpisy v kóde.

PS: Prosím, nepoužívaj goto lebo Vágner zabije koťátko.

 
Nahoru Odpovědět  +2 16.12.2018 16:03
Avatar
Michal Žůrek - misaz:17.12.2018 8:09

A co třeba toto:

wordWrap(0, "");

P.S: V jakém předmětu jsou tak jednoduché progtesty? Procházel jsem seznam předmětů katedry kreditů zdarma a nic nenašel.

 
Nahoru Odpovědět 17.12.2018 8:09
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.