Ir para conteúdo
Fórum Script Brasil
  • 0

alocação dinamica de memoria


dmanauara

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

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 por Risadão
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...