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