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

Mirea Bogdan-Stefan b.mirea at yahoo.com
Sun Mar 18 11:53:11 EET 2012


Mihail Costea <mihail.costea2005 at ...> writes:

> 
> 
> Valgrind nu e de acord cu tine. E memory leak. Ruleaza acest program odata cu
free comentat si odata decomentat:
> 
> ---------------
> #include <stdlib.h>
> #include <unistd.h>
> 
> int main(int argc, char *argv[]) {
>     int *a = malloc(sizeof(int));
>     *a = 15;
> 
>     execl("lssd", "sadew", NULL);
>     //free(a);
>     return 1;
> }
> ---------------
> 
> 
> Vei observa memory leaks. Exec esueaza si astfel memoria ocupata de <a> nu mai
este eliberata automat.
> 
> Mihai
> 2012/3/18 Mirea Bogdan-Stefan <b.mirea at yahoo.com>
> Practic, tu ar trebui sa te asiguri ca in zona de cod a procesului copil
dedinainte de exec sa nu ai Memory Leak-uri.
> Scuze pt reply
> Bogdan
>
_______________________________________________http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii


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.


Cred ca ar fi bine sa ne raspunda un asistent.





More information about the so mailing list