Ir para conteúdo

cgm2k7

Members
  • Total de itens

    7
  • Registro em

  • Última visita

Posts postados por cgm2k7


  1. Boa noite!

    Bom preciso de uma dica/ajuda em uma problema...

    tenho duas structs, LIST e NO.  lista duplamente encadeada.

    //insiro/crio 100.000 nos.

     

    struct no{
        char *nome;
        char sexo;
        float nota;
        float media;
        int id;    
        struct no *next, *prev;
    };
    
    struct list{
        long int size_list;
        struct no *begin, *end;
    };
    
    typedef struct no NO;
    typedef struct list LIST;
    
    for(int y = 0; y < 100000; y++)
                inserir_inicio(*list); 
    
    void CreateNo(NO **no)
    {
        *no = (NO*)calloc(1,sizeof(NO));
    
        if (*no) {
            (*no)->nome = "cicero";
            (*no)->sexo = 'M';
            (*no)->nota = 0.0;
            (*no)->media = 1;
            (*no)->id++;
            (*no)->next = NULL;
            (*no)->prev = NULL;
    
            is_Ok = true;
        }
        else {
            printf("ERRO: Ao alocar memoria em 'void CreateNo(NO **no)'\n");
            is_Ok = false;
            return;
        }
    }
    
    void inserir_inicio(LIST *list)
    {
        NO *no;
        CreateNo(&no);
    
        if (is_Ok) {    
            no->next = list->begin;
            list->begin = no;
            list->size_list++;
        }
    }
    
    // destroy os nos
    void DestoyList(LIST **list)
    {
    	if ((*list)->begin == NULL)
    	{
    		free(*list);
    		printf("Lista vazia!\n\n");
    	}
    	else {
    		NO *p = (*list)->begin, *tmp = NULL;
    		
    		while (p != NULL) {			
    			tmp = p;
    			p = p->next;
    
    			/*tmp->nome = "0";
    			tmp->sexo = '\0';
    			tmp->id = 0;
    			tmp->media = 0;*/
    
    			free(tmp);
    		}
    		free(p);
    		(*list = NULL);		
    	}
    }

    o problema é o seguinte:

    quando inicio o aplicativo ele começão com 512kb, quando criando  100.000  na memoria heap, aumenta para mais ou menos uns 7,8mb, bom ate aqui tudo oks

    mas quando delete este nos com o free() esperava eu q retornasse para os mesmo 512kb inicias do aplicativo, mas isso não acontece, ele retorna para 1,3mb.

    minha pergunta é: porque não deleta tudo, já setei zeros e para todos os membros da struct no mas mesmo assim não deleta tudo.

    Se alguém poder meda da uma dica. OBS: não quero código  pronto eu quero apenas dicas se possível bem explicada porque sou meio novato em c kkk.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.