This shows you the differences between two versions of the page.
| 
    sd-ca:teme:tema1-2024 [2024/03/22 20:24] matei.mantu Adaugare Checker  | 
    
    sd-ca:teme:tema1-2024 [2024/03/27 21:24] (current) maria.sfiraiala [Actualizări]  | 
    ||
|---|---|---|---|
| Line 13: | Line 13: | ||
| * Eliminare mesaj de eroare INVALID_COMMAND: **22.03.2024** | * Eliminare mesaj de eroare INVALID_COMMAND: **22.03.2024** | ||
| + | * Publicare checker: **22.03.2024** | ||
| + | * Update checker: **26.03.2024** | ||
| + | * Mențiune privind obligativitatea eliminării blocurilor la alocare din vectorul de liste: **27.03.2024** | ||
| ===== Obiective ===== | ===== Obiective ===== | ||
| Line 53: | Line 55: | ||
| - Adresele din heap vor fi în intervalul [heap_base, heap_base + heap_size). | - Adresele din heap vor fi în intervalul [heap_base, heap_base + heap_size). | ||
| * Parametrul <tip_reconsituire> va fi relevant pentru cerința FREE, găsiți mai multe detalii la secțiunea acesteia. | * Parametrul <tip_reconsituire> va fi relevant pentru cerința FREE, găsiți mai multe detalii la secțiunea acesteia. | ||
| + | |||
| + | <note> | ||
| + | <adresă_start_heap> reprezintă un număr pozitiv, nenul. | ||
| + | </note> | ||
| <note> | <note> | ||
| Line 214: | Line 220: | ||
| <code> | <code> | ||
| Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes, | Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes, | ||
| - | care începe de la adresa 0x0. | + | care începe de la adresa 0x1. | 
| MALLOC 6 | MALLOC 6 | ||
| ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes | ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes | ||
| ce va fi alocată și o parte de 10 bytes ce rămâne liberă | ce va fi alocată și o parte de 10 bytes ce rămâne liberă | ||
| - | Se întoarce adresa 0x0. | + | Se întoarce adresa 0x1. | 
| MALLOC 5 | MALLOC 5 | ||
| ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes | ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes | ||
| ce va fi alocată și o parte de 5 bytes ce rămâne liberă | ce va fi alocată și o parte de 5 bytes ce rămâne liberă | ||
| - | Se întoarce adresa 0x6. | + | Se întoarce adresa 0x7. | 
| - | FREE 0x6 | + | FREE 0x7 | 
| ---> Se alipește fragmentul de 5 bytes cu fragmentul liber de | ---> Se alipește fragmentul de 5 bytes cu fragmentul liber de | ||
| 5 bytes. | 5 bytes. | ||
| Rezultă un bloc de dimensiune 10 bytes. | Rezultă un bloc de dimensiune 10 bytes. | ||
| - | FREE 0x0 | + | FREE 0x1 | 
| ---> Se alipește fragmentul de 6 bytes cu fragmentul liber de | ---> Se alipește fragmentul de 6 bytes cu fragmentul liber de | ||
| 10 bytes. | 10 bytes. | ||
| Line 238: | Line 244: | ||
| <code> | <code> | ||
| Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes, | Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes, | ||
| - | care începe de la adresa 0x0. | + | care începe de la adresa 0x1. | 
| MALLOC 6 | MALLOC 6 | ||
| ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes | ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes | ||
| ce va fi alocată și o parte de 10 bytes ce rămâne liberă | ce va fi alocată și o parte de 10 bytes ce rămâne liberă | ||
| - | Se întoarce adresa 0x0. | + | Se întoarce adresa 0x1. | 
| MALLOC 5 | MALLOC 5 | ||
| ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes | ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes | ||
| ce va fi alocată și o parte de 5 bytes ce rămâne liberă | ce va fi alocată și o parte de 5 bytes ce rămâne liberă | ||
| - | Se întoarce adresa 0x6. | + | Se întoarce adresa 0x7. | 
| - | FREE 0x0 | + | FREE 0x1 | 
| ---> Se creează un bloc nou de dimensiune 6 bytes. | ---> Se creează un bloc nou de dimensiune 6 bytes. | ||
| Există 2 liste cu câte un bloc fiecare, unul de 5 bytes și unul de 6 bytes. | Există 2 liste cu câte un bloc fiecare, unul de 5 bytes și unul de 6 bytes. | ||
| - | FREE 0x6 | + | FREE 0x7 | 
| ---> Se alipește fragmentul de 5 bytes cu fragmentele de 5 și 6 bytes. | ---> Se alipește fragmentul de 5 bytes cu fragmentele de 5 și 6 bytes. | ||
| Există o singură listă, cu un singur bloc, de dimensiune 16 | Există o singură listă, cu un singur bloc, de dimensiune 16 | ||
| Line 280: | Line 286: | ||
| * Este **obligatorie** construirea unei implementări care folosește conceptul de **vector de liste dublu înlănțuite**. | * Este **obligatorie** construirea unei implementări care folosește conceptul de **vector de liste dublu înlănțuite**. | ||
| + | |||
| + | * Este **obligatoriu** să realizați eliminarea blocurilor din vectorul de liste atunci când acestea sunt alocate. | ||
| * Nerespectarea acestor constrângeri va conduce la **notarea temei cu 0 puncte**. | * Nerespectarea acestor constrângeri va conduce la **notarea temei cu 0 puncte**. | ||
| Line 292: | Line 300: | ||
| Pentru a utiliza checker-ul: | Pentru a utiliza checker-ul: | ||
| * Dezarhivați fișierul .zip în folderul in care se află implementarea voastră. | * Dezarhivați fișierul .zip în folderul in care se află implementarea voastră. | ||
| - | * Asigurați-vă că Makefile-ul vostru contine regulile **build**, **run_sfl** și **clean**. | + | * Asigurați-vă că Makefile-ul vostru conține regulile **build**, **run_sfl** și **clean**. | 
| * Rulați folosind comanda "./check". | * Rulați folosind comanda "./check". | ||
| </note> | </note> | ||