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.