Differences

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

Link to this comparison view

programare:good-practices [2020/10/07 17:46]
dorinel.filip [Erori frecvente în alocarea de memorie și lucrul cu fișiere]
programare:good-practices [2020/10/07 18:26] (current)
dorinel.filip [Memory leaks]
Line 1: Line 1:
 +
 ====== Bune practici și erori frecvente în C ====== ====== Bune practici și erori frecvente în C ======
  
-În această ghid facem o trecere în revistă a câtorva bune practice și erori frecvente de codare în limbajul C.+**Responsabili:​**  
 +  * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip]] (2020) 
 +  * [[neatudarius@gmail.com|Darius Neațu]] (2020) 
 + 
 + 
 +În aceast ghid facem o trecere în revistă a câtorva bune practice și erori frecvente de codare în limbajul C.
  
 ===== Erori frecvente în alocarea de memorie și lucrul cu fișiere ===== ===== Erori frecvente în alocarea de memorie și lucrul cu fișiere =====
Line 17: Line 23:
 <note warning>​Atunci când folosim memorie alocată dinamic (cu ''​malloc(...)'',​ ''​calloc(...)''​ etc.) trebuie să avem în vedere să și dealocăm memoria atunci când nu o mai folosim!</​note>​ <note warning>​Atunci când folosim memorie alocată dinamic (cu ''​malloc(...)'',​ ''​calloc(...)''​ etc.) trebuie să avem în vedere să și dealocăm memoria atunci când nu o mai folosim!</​note>​
  
-Prin utilizarea utilitarului [[https://​valgrind.org|Valgrind]] checker-ul folosit la notarea automată a temelor poate descoperi execuțiile care lasă memorie nedealocată,​ iar acest lucru va fi depunctat, conform enunțului temei repective.+<​note>​Prin utilizarea utilitarului [[https://​valgrind.org|Valgrind]] checker-ul folosit la notarea automată a temelor ​la Seria CA poate descoperi execuțiile care lasă memorie nedealocată,​ iar acest lucru va fi depunctat, conform enunțului temei repective.</​note>​
  
 ==== Neînchiderea fișierelor ==== ==== Neînchiderea fișierelor ====
Line 95: Line 101:
  scanf("​%d",​ &n);  scanf("​%d",​ &n);
  
- while(n < 0 || n > MAX_SIZE) { + while(n <0 || n > MAX_SIZE) { 
- printf("​Numarul este prea mare, te rog introdu un nr. din [0, %d]\n",​ MAX_SIZE);+ printf("​Numarul este prea mare, te rog introdu un nr. din (0, %d]\n",​ MAX_SIZE);
  scanf("​%d",​ &n);  scanf("​%d",​ &n);
  }  }
Line 112: Line 118:
  scanf("​%d",​ &n);  scanf("​%d",​ &n);
  
- while(n < 0) {+ while(n <0) {
  printf("​n trebuie sa fie un numar pozitiv. Reincearca!\n"​);​  printf("​n trebuie sa fie un numar pozitiv. Reincearca!\n"​);​
  scanf("​%d",​ &n);  scanf("​%d",​ &n);
Line 133: Line 139:
 Pentru soluția 1 se observă că pune în responsabilitatea programatorului determinarea lui '​MAX_SIZE',​ care poate interveni ca o limitare nejustificată a funcționalității programului. ​ Pentru soluția 1 se observă că pune în responsabilitatea programatorului determinarea lui '​MAX_SIZE',​ care poate interveni ca o limitare nejustificată a funcționalității programului. ​
  
-Un cititor al soluției 2 poate reclama contradicțiecu recomandarea de a folosi memorie alocată static dacă dealocarea se va face în același context și dimensiunea alocată nu este mare. Totuși, codul nu garantează că n este un număr mic. +Un cititor al soluției 2 poate reclama contradicție cu recomandarea de a folosi memorie alocată static dacă dealocarea se va face în același context și dimensiunea alocată nu este mare. Totuși, codul nu garantează că n este un număr mic. 
  
 <​note>​**Nu** este recomandată combinarea (pe cazuri) a celor 2 soluții, deoarece complică foarte mult codul, iar plusul de performanță este rareori semnificativ. ​ <​note>​**Nu** este recomandată combinarea (pe cazuri) a celor 2 soluții, deoarece complică foarte mult codul, iar plusul de performanță este rareori semnificativ. ​
programare/good-practices.1602081969.txt.gz · Last modified: 2020/10/07 17:46 by dorinel.filip
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