Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl:labs:06 [2016/11/07 22:54]
bogdan.nitulescu [pointer]
cpl:labs:06 [2016/11/08 00:02] (current)
bogdan.nitulescu [Exerciții]
Line 255: Line 255:
  
 ====== Exerciții ====== ====== Exerciții ======
-{{:​cpl:​labs:​laborator-05-arhiva.zip|Arhiva}} laboratorului.+{{:​cpl:​labs:​lab06_skel.zip|Arhiva}} laboratorului.
   - De ce nu există diferențe pentru definițiile lui v între următoarele semnături de funcții? <code c> void f(int * v); </​code> ​ și <code c> void g(int v[]); </​code>​   - De ce nu există diferențe pentru definițiile lui v între următoarele semnături de funcții? <code c> void f(int * v); </​code> ​ și <code c> void g(int v[]); </​code>​
 +  - Intrati in directorul ''​diff_vec_ptr1''​. Rulati ''​make''​ apoi rulati programul. Care este problema? Incercati sa explicati apoi rezolvati bug-ul. Puteti vedea acelasi comportament si ruland codul din directorul ''​diff_vec_ptr2''​.
   - Determinați (inspectând codul asm) cum sunt implementați [[http://​gcc.gnu.org/​onlinedocs/​gcc/​Variable-Length.html | vectorii automatici de lungime variabilă]]. Pentru vectori automatici de lungime constantă ''​sizeof(v)''​ reprezintă toată memoria alocată (în bytes) pentru acel vector - o constantă cunoscută la momentul compilării. Cum este implementat operatorul ''​sizeof''​ pentru vectori de lungime variabilă? Folosiți codul din directorul ''​alloca''​ din arhiva laboratorului.   - Determinați (inspectând codul asm) cum sunt implementați [[http://​gcc.gnu.org/​onlinedocs/​gcc/​Variable-Length.html | vectorii automatici de lungime variabilă]]. Pentru vectori automatici de lungime constantă ''​sizeof(v)''​ reprezintă toată memoria alocată (în bytes) pentru acel vector - o constantă cunoscută la momentul compilării. Cum este implementat operatorul ''​sizeof''​ pentru vectori de lungime variabilă? Folosiți codul din directorul ''​alloca''​ din arhiva laboratorului.
   - Scrieți un program care să determine ordinea secțiunilor în memorie.   - Scrieți un program care să determine ordinea secțiunilor în memorie.
     * ''​Hint'':​ Declarați obiecte în fiecare secțiune și verificați adresa.     * ''​Hint'':​ Declarați obiecte în fiecare secțiune și verificați adresa.
 +  - Intrati in directorul ''​classes''​. Fara a modifica functia main, faceti schimbari in fisierul ''​classes.cpp''​ astfel incat sa apara "​different"​. Scoateti cast-urile catre void *. De ce afiseaza din nou "​same"?​
   - Modificați programul următor pentru a afișa **structurile sunt identice**:   - Modificați programul următor pentru a afișa **structurile sunt identice**:
 <file c ex8.c> <file c ex8.c>
Line 289: Line 291:
 </​file>​ </​file>​
  
 +===== BONUS =====
 +Intrati in directorul ''​bonus'',​ compilati si rulati programul. De ce primim ''​Segmentation fault''?​ In ce sectiuni se gasesc "Hello 1", "Hello 2", pc1, respectiv pc2?
  
cpl/labs/06.1478552068.txt.gz · Last modified: 2016/11/07 22:54 by bogdan.nitulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0