dmanauara Postado Junho 10, 2009 Denunciar Share Postado Junho 10, 2009 (editado) Oi Pessoal, Gostaria de saber... se vocês tem exemplos de programas usando:-Malloc-Calloc-Realloc - Freetenho um trabalho sobre isso... e não estou conseguindo. entender nada.... quem puder... favor me ajude!!! Editado Junho 10, 2009 por dmanauara Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Risadão Postado Junho 11, 2009 Denunciar Share Postado Junho 11, 2009 (editado) Boa noite dmanauara, - malloc: forma abreviada de escrever "mass memory allocation" (alocação de memória). Pode ser usada por exemplo quando você quer criar um vetor sem tamanho pré-definido, como se a cada vez que você rodasse o programa o tamanho do vetor mudasse. Ex.:int main() { int *VET, V; cout << "Digite o tamanho do vetor: "; cin >> V; VET = (int *)malloc(V * sizeof(int)); } Neste exemplo o usuário digita o tamanho do vetor a ser criado, e a cada vez que o prog. rodar este número poderá mudar. - calloc: Também é usado para alocação dinâmica. Gera um array de memória e o preenche com 0 (zero). calloc vem do termo "cleared memory allocation". Ex.: int main() { int *p, t; cout << "Digite um valor: "; cin >> t; p = calloc(t, sizeof(int)); } - realloc: Abreviação de "Resizing arrays", serve para realocar ponteiros já alocados anteriormente. Ex.: p = realloc(20 * sizeof(int)); - free: Do termo "Freeing Dynamic Memory", libera o espaço allocado na memória. Ex.: free(VET);Obs.: No caso do malloc, é necessário fazer um cast antes do malloc para informar o tipo de bytes que será usado, neste caso como estamos utilizando int, ficou da seguinte forma: VET = (int *)malloc(V * sizeof(int)) Se estivesse utilizando um char por exemplo ficaria: VET = (char *)malloc(V * sizeof(char)). Já em calloc este cast não é necessário. Quando se aloca um espaço da memória, este espaço ainda não foi inicializado e pode conter lixo no buffer, para resolver este problema utilizamos a menset que inicializa o array e o preenche com 0 (zero). memset() subistitiu a antiga bzero().Espero ter ajudado! Até mais... Editado Junho 11, 2009 por Risadão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dmanauara Postado Junho 11, 2009 Autor Denunciar Share Postado Junho 11, 2009 Valeu!! Risadão.. Agora , você sabe... como eu faço para mostrar o conteúdo da memoria liberada? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rodrigogsi Postado Junho 12, 2009 Denunciar Share Postado Junho 12, 2009 Pra ti motrar o conteudo da memória liberada, de um print em long int / int (de acordo com o tamanho) da função sizeof(tipo do dado para o qual a memória foi alocada)*numero de vezes da alocação ;).[]'s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Junho 12, 2009 Denunciar Share Postado Junho 12, 2009 Agora , você sabe... como eu faço para mostrar o conteúdo da memoria liberada?Ver o conteúdo de uma área de memória que já foi liberada é uma prática temerária. Uma vez que houve a liberação, o gerenciador de memória já pode ter utilizado o espaço para outra alocação. Logo, o ponteiro que você tinha para esse bloco, já está na condição de "selvagem". Qualquer coisa feita com ele após a liberação, e em relação aos dados anteriores, é altamente suscetível a erro. Por esse motivo, muitos programadores tornam o ponteiro NULL, após a liberação de memória.Se quiser ver o conteúdo da memória, faça isso antes da liberação, uma vez que este ponteiro ainda será seu. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
dmanauara
Oi Pessoal, Gostaria de saber... se vocês tem exemplos de programas usando:
-Malloc
-Calloc
-Realloc
- Free
tenho um trabalho sobre isso... e não estou conseguindo. entender nada.... quem puder... favor me ajude!!!
Editado por dmanauaraLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.