Dúvida Liberar Memória

1. Dúvida Liberar Memória

Ovídio José Francisco
ovidiojf

(usa Ubuntu)

Enviado em 10/06/2011 - 12:00h

Amigos,


Já li os artigos aqui do VOL sobre alocação dinâmica, perguntei ao google, e ainda tem uma dúvida.

Se entendi bem, pela razão, toda chamada a malloc() deve ter uma correspondente free(), Ok?

Então se uma varivel char* string recebe o retorno de uma função char *DaStr, que alloca memoria para construir uma string e retorná-la, devo chamar free(string); assim que terminar de usá-la ou antes de um nova atribuição. Ok?

Quando chamo free(string); o compilador gera um warring: "attempt to free a non-heap object 'string'"

Poque? Será que compilador não consegue detectar que a alocação dinâmica? Devo ignoar o a mensagem ou existe algum erro na lógica ?

Outra dúvida, se a função allocar, digamos, 256 bytes, mas a string construída tiver apenas poucos bytes (tipo... result[5] = 0), free(string) irá liberar os 256 ou num caso desses teremos um vazamento de memória?

dede já, brigado.




  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts