2015-03-23 10:09 GMT+02:00 Andrei Tuicu via so <so@cursuri.cs.pub.ro>: > > > În data de 23 martie 2015, 09:59, Vlad Dogaru via so <so@cursuri.cs.pub.ro> > a scris: > >> On Mon, Mar 23, 2015 at 07:36:32AM +0000, Sebastian ENE via so wrote: >> > Salut, >> > >> > Am si eu o intrebare daca puteti sa ma lamuriti va rog : >> > >> > Pe Linux intr-un process copil aloc memorie inainte de a executa >> > execv(). >> > Dupa ce am executat execv() toata memoria procesului copil se suprascrie >> > (asta inclusive heap-ul in urma alocarilor cu malloc, calloc..) >> > 1.Apelul free() dupa execv() nu mai are sens deoarece s-a suprascris >> > intreaga zona de memorie nu? >> >> După un execv() cu succes nu se mai execută nimic din codul de după. >> Deci dacă pui free() după nu are sens, pentru că nu se ajunge la el. >> >> Are sens să apelezi free dacă execv() eșuează, dar nu cred că asta >> întrebai. >> >> > 2.File descriptorii deschisi inainte de execv() se pierd, dar >> > structurile aferente procesului care fac legatura cu inode-urile >> > raman? >> >> File descriptorii nu se pierd decât dacă au flag-ul close on exec [1]. >> Ceilalți rămân. This makes sense if you think about it, poți moșteni, >> at the very least, stdin, stdout și stderr, ca să nu te trezești că ai >> executat un program redirectat într-un fișier și apoi el face exec() >> altuia care începe să scrie la consolă. >> >> [1] >> http://stackoverflow.com/questions/6125068/what-does-the-fd-cloexec-fcntl-flag-do >> >> > 3.Pe Windows trebuie sa dealocam memoria pentru parametrii in linie de >> > comanda trimisi catre CreateProcess() din procesul parinte pentru a >> > evita memory leak-uri ? >> >> Asta nu știu. > > Poti sa incerci sa rulezi cu DrMemory pe Windows sa vezi ce zice: > http://www.drmemory.org/ (free and open source). >
Nu este permis să ai leak-uri de memorie. Trebuie să te gândești la o soluție să-i eliberezi. PS: te rog să dai un titlu sugestiv la thread-urile pornite pe listă. Adrian _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii