<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Salut, Razvan!</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Ai avut dreptate ca tema mea ajungea la 1000 de alocari din cauza ca aparea un loop. Am rezolvat acum problema.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Cred totusi ca merita sa luam in considerare adaugarea unui return -1 <span style="font-family: Calibri, Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255); display: inline !important">dupa forul din functia run_until_success[1].</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Daca cineva ar vrea sa scape de testarea mallocurilor ar trebui doar sa introduca acest cod la inceputul mainului:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
char *aux;</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
int i;</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
for (i = 0; i < 1000; ++i) { </div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
aux = malloc(1);</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
DIE(aux == NULL, "trick malloc check");</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
free(aux);</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
}</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Orice alte mallocuri ar face apoi, nu ar mai fi verificate de checker. Asemenea se poate face si pentru calloc si realloc.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Alternativ, daca prin absurd cineva face peste 1000 de mallocuri in tema si ajunge la rezultatul corect, alocarile nu vor fi neaparat verificate.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
In plus, in cazul meu, checkerul s-ar fi oprit dupa ce trecea prin 1000 de mallocuri fara sa mai continue la calloc.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Daca tema va mai fi folosita si in anii viitori, poate ca schimbarea pe care am propus-o se dovedeste utila.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Multumesc pentru ajutor,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Stefan</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
[1] <a href="https://github.com/systems-cs-pub-ro/so-assignments/blob/9efb7acc7bf65a49a77ae38633996d0bd362ef5e/1-multi/checker/multi/_test/run_test.sh#L162" id="LPlnk280273">https://github.com/systems-cs-pub-ro/so-assignments/blob/9efb7acc7bf65a49a77ae38633996d0bd362ef5e/1-multi/checker/multi/_test/run_test.sh#L162</a></div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Razvan Crainea <razvan.crainea@gmail.com><br>
<b>Sent:</b> Sunday, March 8, 2020 7:22 PM<br>
<b>To:</b> Vlad Lungu <vlad.lsc2008@gmail.com>; Sisteme de Operare <so@cursuri.cs.pub.ro><br>
<b>Cc:</b> Ştefan VODIŢĂ (94345) <stefan.vodita@stud.acs.upb.ro><br>
<b>Subject:</b> Re: [so] [Tema1][Test38] NR_RUNS=1000 e prea mic</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Salut, Ștefan!<br>
<br>
Testul rulează tema ta de 3000 de ori[1], de câte 1000 de ori pentru<br>
fiecare din funcțiile malloc (linia 180), calloc (linia 185) și<br>
realloc (linia 190). De asta ai mai mult de 1000 de output-uri.<br>
Probabil problema ta este că nu tratezi corect unul din cazurile de<br>
eroare, și programul tau intră într-un loop.<br>
<br>
Numai bine,<br>
Răzvan<br>
<br>
[1] <a href="https://github.com/systems-cs-pub-ro/so-assignments/blob/master/1-multi/checker/multi/_test/run_test.sh#L180">
https://github.com/systems-cs-pub-ro/so-assignments/blob/master/1-multi/checker/multi/_test/run_test.sh#L180</a><br>
<br>
Numai bine,<br>
Răzvan<br>
<br>
On Sun, Mar 8, 2020 at 5:30 PM Vlad Lungu via so <so@cursuri.cs.pub.ro> wrote:<br>
><br>
> Când declari hash-ul, ai grija la dimensiune. Nu ai nevoie de o tabelă hash de dispersie prea mare.<br>
><br>
> On Sun, 8 Mar 2020, 16:56 Ştefan VODIŢĂ (94345) via so, <so@cursuri.cs.pub.ro> wrote:<br>
>><br>
>> Salut!<br>
>><br>
>> Am probleme la testul 38. Am folosit DIE pentru a opri executia de fiecare data cand o alocare esueaza.<br>
>> Atunci cand rulez checkerul vad outputul de la DIE repetat pentru diferite alocari. La final apare un mesaj out of memory care anunta ca va fi oprit procesul so-cpp, iar testul pica.<br>
>><br>
>> Daca nu ma insel, se verifica consecutiv fiecare alocare prin care se trece la rulare, dar acest lucru e limitat la 1000 de incercari.<br>
>> In cazul meu, am numarat 1010 linii de eroare pana s-a oprit programul. Nu stiu de ce sunt 10 in plus, dar deduc ca la testul 38 fac mai mult de 1000 de alocari si checkerul nu continua verificarea mai departe de NR_RUNS=1000.<br>
>><br>
>> E corecta presupunerea mea? Daca nu, din ce cauza ar putea sa apara problema pe care o am?<br>
>><br>
>><br>
>> Multumesc,<br>
>> Stefan Vodita<br>
>> _______________________________________________<br>
>> <a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a><br>
><br>
> _______________________________________________<br>
> <a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a><br>
<br>
<br>
<br>
-- <br>
Răzvan Crainea<br>
</div>
</span></font></div>
</body>
</html>