FELIPE ULBRIK FELIN
09/02/2023 22:26:11
No programa desenvolvido no módulo de Projetos com Wifi foi utilizado as funções de alocação dinâmica de memória. Em (1) não deveria haver um cast de ponteiro para a função malloc? Em (2) porque foi feito o cast com (void*)? Pelo que entendi pelo help do mikroC não haveria necessidade de colocar cast.
clist_t* clist_create (uint16_t size) { clist_t *res; /* * Aloca um novo objeto. */ res = malloc(sizeof(clist_t)); if(res == NULL) return NULL; res->dados = malloc(size); (1) if(res->dados == NULL) { FreeMem((void*)res, sizeof(clist_t)); (2) return NULL; } /* * Inicia como um buffer vazio. */ res->in = 0; res->out = 0; res->size = 0; res->total = size; return res; }
FERNANDO SIMPLICIO DE SOUSA
12/02/2023 20:49:54
o retorno da função "malloc" é um ponteiro (void*), logo a função "free" deveria receber também um (void*). De qualquer forma, o cast está sendo realizado ao passar res para "FreeMem";
Fique a vontade de realizar o cast conforme abaixo.;
res = (clist_t *) malloc(..);