[so] [Wiki][Indicatii generale teme] Cod dupa apelul exec

Razvan Crainea razvan.crainea at gmail.com
Wed Mar 21 16:06:52 EET 2012


2012/3/19 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>:
> Mirea Bogdan-Stefan <b.mirea at yahoo.com> writes:
>> Ce ai tu acolo, este memory leak pentru ca tu ai doar proces parinte, care va
>> face exec. Eu ma refeream la cazul in care faci fork.
>> Este normal ca in procesul parinte sa eliberezi memoria. Si este oarecum normal
>> ca si in procesul copil sa trebuiasca eliberata, dar nu cred ca este necesar
>> pentru ca tu o sa astepti in parinte terminarea copilului, iar cand terminarea
>> lui va fi constatata, toata memoria alocata pt el se va elibera.
>

La terminarea procesului, sistemul de operare eliberează întreaga
memorie alocata unui program - atât cea alocată dinamic, pe heap, cât
și secțiunile de date și cod. Prin urmare nu ar mai fi nevoie să le
eliberați voi explicit.

Din motive didactice, pentru a vă induce mai multă responsabilitate
legată de managementul memoriei alocate dinamic, pentru temele de la
SO va trebui să eliberați întreaga memorie alocată înainte de
terminarea programului. În cazul în care omiteți să faceți acest
lucru, veți fi depunctați conform listei de depunctări[1].

Această regulă nu se aplică dacă în programul vostru apare o eroare și
iese forțat. De exemplu cazul în care condiția macro-ului DIE este
falsă și programul se încheie cu exit(EXIT_FAILURE). Am actualizat
acest lucru și în regulament[2].

[1] http://elf.cs.pub.ro/so/wiki/teme/general#lista-depunctari
[2] http://elf.cs.pub.ro/so/wiki/reguli-notare#teme-de-casa-1-punct-5-puncte-5-puncte-corelare-punctaj

-- 
Răzvan Crainea


More information about the so mailing list