<div dir="ltr"><div><div>Gata, am rezolvat si cu alocarile intermediare.<br><br></div>Multumesc mult de ajutor,<br></div>Alin-Gabriel Gheorghe 331CA<br></div><div class="gmail_extra"><br><div class="gmail_quote">În data de 13 aprilie 2016, 11:28, Adrian Stanciu <span dir="ltr"><<a href="mailto:adrian.stanciu.pub@gmail.com" target="_blank">adrian.stanciu.pub@gmail.com</a>></span> a scris:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">2016-04-13 11:17 GMT+03:00 Alin Gabriel Gheorghe<br>
<<a href="mailto:gheorghealingabriel@gmail.com">gheorghealingabriel@gmail.com</a>>:<br>
<span class="">> Problema era ca alocam (cu calloc) un char *buffer dupa ce apelam<br>
> VirtualAlloc si setam pointerul de start.<br>
><br>
> Singura explicatie pentru acest comportament ar fi ca calloc-ul mapa memorie<br>
> peste memoria mea, dar e o explicatie fabricata de mine. Poate cineva sa<br>
> ofere o explicatie mai buna?<br>
><br>
<br>
</span>E o problemă, deoarece zona este eliberată și alocările tale pot să fi<br>
făcute acolo. Mai târziu, te aștepți să o poți rezerva din nou.<br>
Rezervarea pagină cu pagină trebuie făcută imediat după eliberarea<br>
zonei mari.<br>
<br>
Încă ai unele alocări intermediare ce îți pot face probleme.<br>
<br>
PS: folosiți bottom-posting [1] în discuțiile de pe listă pentru o<br>
citire mai ușoară a intervențiilor<br>
<span class=""><br>
><br>
> În data de 13 aprilie 2016, 11:12, Adrian Stanciu<br>
> <<a href="mailto:adrian.stanciu.pub@gmail.com">adrian.stanciu.pub@gmail.com</a>> a scris:<br>
>><br>
>> 2016-04-13 11:02 GMT+03:00 Alexandru Jercaianu via so<br>
>> <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>>:<br>
>> > Salut,<br>
>> ><br>
>> > Memoria eliberata cu VirtualFree trebuie sa fi fost alocată cu<br>
>> > VirtualAlloc.<br>
>> > Probabil apelezi VirtualFree peste ceva alocat cu MapViewOfFile. Aveam<br>
>> > aceeași problema.<br>
>> ><br>
>> > Alex Jercaianu<br>
>> ><br>
>> > Buna seara,<br>
>> ><br>
>> > Am intampinat o problema la rularea testelor pe masina virtuala. Se pare<br>
>> > ca<br>
>> > in functia vm_free() are un comportament nedeterminist, in sensul ca la<br>
>> > rularea checker-ului se activeaza un DIE din acea functie aleator<br>
>> > (intotdeauna unul ce contine un VirtualFree). Am incercat sa rulez<br>
>> > separat<br>
>> > testele care pica asa si am constatat ca uneori dau fail (cu eroarea de<br>
>> > mai<br>
</span>>> > sus) si alteori pass fara probleme.*<br>
<span class="">>> ><br>
>> > Mentionez ca local, pe sistemul meu de operare (Windows 7 x64), testele<br>
>> > trec<br>
>> > fara probleme la rulari succesive. De asemenea, mentionez si ca nu am<br>
>> > implementat functionalitate pentru mai multe apeluri vm_alloc() (sa fie<br>
>> > oare<br>
>> > de la asta?).<br>
>> ><br>
>> > Stie cineva care ar putea fi problema?<br>
>> ><br>
>><br>
>> Salut,<br>
>><br>
>> Pe lângă recomandarea lui Alex, să faci toți pașii de rezervare a<br>
>> paginilor virtuale unul după celălalt. Din ce văd în cod după ce<br>
>> eliberezi spațiul mare și până faci alocarea pagină cu pagină, mai<br>
>> faci unele alocări de memorie ce pot să fie plasate în spațiul ce îl<br>
>> vrei rezervat pentru paginile virtuale. Verifică dacă unele<br>
>> VirtualAlloc() dau eroare. Cred că de aici e comportamentul<br>
>> nedeterminist (depinde unde se fac acele alocări intermediare).<br>
>><br>
>> Dacă nu e de la asta, să-mi spui.<br>
>><br>
<br>
</span>[1] <a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii#inlineinterleaved_posting" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so/info/lista-discutii#inlineinterleaved_posting</a><br>
<span class="HOEnZb"><font color="#888888"><br>
Adrian<br>
</font></span></blockquote></div><br></div>