Diskuze: chyba: Segmentation fault/Bus error/Memory limit exceeded/Stack limit exceeded
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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.
Zobrazeno 3 zpráv z 3.