Ajutor - Cauta - Forumisti - Calendar
Versiune completa:Dincolo De Ratiune
HanuAncutei.com - ARTA de a conversa > Odaia IT > Software, Hardware si Programare
Olaf
Tocmai am patit o chestie... aveam un program care nu mergea. Adica mergea, dar se comporta cu totul aiurea. Scris in C. Deci, ma apuc sa incerc sa descopar ce nu e bine. Elimin cateva mesaje (printf-uri), bag cateva in plus, ii dau drumul si... MERGE! Adica, practic, nu i-am facut nimic, si merge!
Uimit de intamplare, ii spun colegei mele. La care ea zice: Stai, asta nu e nimic. Saptamana trecuta aveam un program care nu mergea, i-am bagat un comentariu si a mers! blink.gif

Voi ati avut intamplari de genul asta? Sunt computerele noastre paranormale? laugh.gif De ce se comporta asa?
bonobo
sunt fenomene 'normale' care apar atunci cand programezi neingrijit.

de exemplu, daca intr-o functie iti declari un array si il preclucrezi dar treci de limitele lui, stiva crescind de la adrese mari spre adrese mici, ajungi sa suprascrii adresa de return a functiei (adresa apelantului). La iesirea din functie, programul crapa. Daca adaugi/declari o banala variabila (chiar si nefolosita) in functie, poti sa constati ca programul merge pentru ca variabila adaugata va fi suprascrisa in locul adresei de return.

deci, nimic paranormal. wink.gif
Olaf
Crede-ma, am avut FOARTE mare grija sa nu depasesc memoria alocata... wink.gif In plus, nu am declarat nici o variabila noua.
axel
QUOTE (Olaf @ 22 Nov 2005, 11:31 AM)
Crede-ma, am avut FOARTE mare grija sa nu depasesc memoria alocata... wink.gif

Reformuleaza, pentru ca afirmatia ta este ambigua. Si fiecare interpretare are consecinte diferite biggrin.gif
Olaf
Adica sunt sigur ca nu am facut niciuna din greselile de care zice bonobo. Le-am facut alta data, dar acum m-am invatat minte tongue.gif
Pe de alta parte, stiu ca nu exista "paranormal" in legatura cu computerul, dar intamplarea asta ma depaseste.
axel
Parca este totusi posibilitatea sa compilezi cu tot felul de chestii de debug (sa verifice ca chiar nu iesi din array-uri si chestii de genul asta). Incearca, si vezi ce iese. S-ar putea sa ai surprize biggrin.gif

Parerea mea e ca oricum, in C/C++ este nedeterminist cand termini de scris si depanat programul.
calfa
Olaf, atata timp cat ai modificat orice in plus fata de simplele comentarii, chiar si acele printfuri, ai modificat spatiul alocat programului si datelor. Chiar daca inainte de modificare parte a spatiului datelor era gresit alocat (eventual nealocat complet) totusi putea functiona printr-un "concurs de imprejurari" ("nimeni" nu scria peste zona nealocata). Dupa modificare insa, acest "noroc" se poate schimba. smile.gif

Desigur, asta nu inseamna ca exclud implicarea paranormalului in programare. spoton.gif
Olaf
Pai da, dar n-ar fi trebuit, in cazul asta, sa dea eroare la iesirea din functie? Cand incerc sa dezaloc structurile "depasite"?
Aceasta este o versiune "Text-Only" a continutului acestui forum. Pentru a vizualiza versiunea completa, cu mai multe informatii, formatari si imagini,click aici.
Invision Power Board © 2001-2024 Invision Power Services, Inc.