Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //En esta funcion note que habia muchos returns e ifs super anidados
- //basicamente quite los elses que no valian por los returns
- int search_free_memory(int limit) {
- bool keep_serching = true;
- int segments_count = list_size(segments);
- segment_t seg1;
- segment_t seg2;
- if (!segments_count) {
- return 0;
- }
- seg1 = search_minor_segment(-1);
- if (seg1->base > limit) {
- return 0;
- }
- if (segments_count == 1) {
- if (tamanio - seg1->base - seg1->limit > limit) {
- return seg1->base + seg1->limit + 1;
- }
- return -1;
- }
- int i = 0;
- //Aca asigna el seg1 de la misma manera que en la linea 17, medio al cuete
- seg1 = search_minor_segment(-1);
- while (keep_serching && i < segments_count) {
- seg2 = search_minor_segment(seg->base + seg->limit);
- if (seg2->base - seg1->limit - seg1->base > limit) {
- return seg1->base + seg1->limit + 1;
- }
- //Esta condicion esta medio rara porque la variable keep_serching
- //nunca cambia, asi que no se
- if (i == segments_count - 1) {
- if (memoria - seg2->limit - seg2->base > limit) {
- return seg2->limit + seg2->base + 1;
- }
- return -1;
- }
- i++;
- seg1 = seg2;
- }
- return -1;
- }
- segment_t search_next_segment(int from) {
- segment_t segment;
- int actual_minor_base = 99999;
- void get_minor(segment_t* s) {
- if (s->base > from && s->base < actual_minor_base) {
- segment = s;
- actual_minor_base = s->base;
- }
- }
- //Faltaba punto y coma
- list_iterate(segments, get_minor());
- return segment;
- }
- memory_information_t save_seg(char** values) {
- //¿Esto no devolveria siempre 4 porque es el tamaño de un puntero?
- int count_values = sizeof(values);
- for (int i = 0; i < count_values; i++) {
- char* value = values[i];
- }
- int limit = count_values * tamanio_maximo_linea;
- int base = search_free_memory(limit);
- if (base == -1) {
- //ERROR: SIN MEMORIA
- } else {
- segment_t segment = create_segment(limit, base);
- list_add(segments, segment);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement