This shows you the differences between two versions of the page.
sd-ca:teme:tema1-2024 [2024/03/22 20:35] matei.mantu [Bonus (20p)] |
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 219: | Line 225: | ||
---> 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 0x7 | FREE 0x7 | ||
---> Se alipește fragmentul de 5 bytes cu fragmentul liber de | ---> Se alipește fragmentul de 5 bytes cu fragmentul liber de | ||
Line 243: | Line 249: | ||
---> 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 0x1 | FREE 0x1 | ||
---> Se creează un bloc nou de dimensiune 6 bytes. | ---> Se creează un bloc nou de dimensiune 6 bytes. | ||
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**. |